13.04.2011 12:26    

ProhibiT
Çok basit aslında :)
Kod:

;;;==============================================
;;;  Hazırlayan, M. Şahin Güvercin - 13-04-2011 
;;;==============================================
(write-line "\nHazırlayan, M. Şahin Güvercin - www.autocadokulu.com")
(defun c:BboX (/ fLo n obj mnp mxp ebat)
  (setvar "cmdecho" 0) (command "undo" "group") (vl-load-com)
  (setq fLo (open (getfiled "Çıkış Kütüğü" "" "csv" 9) "w") n 0)
  (write-line "PARÇA NO;Delta X;Delta Y;Delta Z" fLo)
  (while (setq obj (car (entsel "\nSelect 3DSoLid Object...")))
    (if (= "3DSOLID" (cdr (assoc 0 (entget obj))))
      (progn
        (setq obj (vlax-ename->vla-object obj))
        (vla-getboundingbox obj 'mnp 'mxp)
        (setq mnp (vlax-safearray->list mnp)
              mxp (vlax-safearray->list mxp)
              ebat (mapcar '(lambda (p1 p2) (abs (- p1 p2))) mnp mxp))
        (write-line (strcat (itoa (setq n (1+ n))) ";"
                      (rtos (nth 0 ebat)) ";"
                      (rtos (nth 1 ebat)) ";"
                      (rtos (nth 2 ebat))) fLo))
      (write-line "\n*** Seçilen obje 3DSoLid olmalıdır. ***")))
  (write-line (strcat "\n  " (itoa n) " tane obje boyutu yazıldı."))
  (close fLo) (setvar "modemacro" "") (command "undo" "e") (prin1)
)
Obje seçmeye devam ettiğiniz sürece dosyaya ebat yazmaya devam eder.

kolay gelsin.

düzenleme:
bu fonksiyonu bir de böyle deneyin. dosyayı excel ile açarken, bir hata mesajı alırsanız "evet" seçip devam etmelisiniz.
Kod:

;;;==============================================
;;;  Hazırlayan, M. Şahin Güvercin - 13-04-2011 
;;;==============================================
(write-line "\nHazırlayan, M. Şahin Güvercin - www.autocadokulu.com")
(defun c:BboX (/ fLo n obj mnp mxp ebat)
  (setvar "cmdecho" 0) (command "undo" "group") (vl-load-com)
  (setq fLo (open (getfiled "Çıkış Kütüğü" "" "xls" 9) "w") n 0)
  (write-line "PARÇA NO\tDelta X\tDelta Y\tDelta Z" fLo)
  (while (setq obj (car (entsel "\nSelect 3DSoLid Object...")))
    (if (= "3DSOLID" (cdr (assoc 0 (entget obj))))
      (progn
        (setq obj (vlax-ename->vla-object obj))
        (vla-getboundingbox obj 'mnp 'mxp)
        (setq mnp (vlax-safearray->list mnp)
              mxp (vlax-safearray->list mxp)
              ebat (mapcar '(lambda (p1 p2) (abs (- p1 p2))) mnp mxp))
        (write-line (strcat (itoa (setq n (1+ n))) "\t"
                      (rtos (nth 0 ebat)) "\t"
                      (rtos (nth 1 ebat)) "\t"
                      (rtos (nth 2 ebat))) fLo))
      (write-line "\n*** Seçilen obje 3DSoLid olmalıdır. ***")))
  (write-line (strcat "\n  " (itoa n) " tane obje boyutu yazıldı."))
  (close fLo) (setvar "modemacro" "") (command "undo" "e") (prin1)
)

ProhibiT (13.05.2011 06:28 GMT)

13.04.2011 17:51    

yst
Sn. prohibit,
teşekkür ederim ilginize, tıklayıp seçmek yerine tüm bloklar için aynı işlemi yapması ve blok adlarını da numaraların yanına yazması mümkün olabilir mi acaba.
saygılarımla...

yst (13.04.2011 18:22 GMT)

13.04.2011 18:56    

ProhibiT
Blok diye bahsettiğiniz 3dsolid olsa gerek. autocad'de block kavramı bambaşka bir şeydir. 4-5 tane objeden bahsettiğiniz için böyle seçerek çalışmayı tercih ettim. ve aslına bakarsanız örnek olması için yazdım. bahsettiğiniz şekilde toplu işlem yapacak şekilde düzenlemeler yapmak maksadı aşan işlerle uğraşmak olur benim için... kolay gelsin.

13.04.2011 19:49    

yst
Sn.Prohibit,
yardımlarınız için teşekkür ederim, bana bir başlangıç verdiniz, üzerinde çalışacağım ve yardım gerekirse yine yazacağım.
amacım, maksadını aşan işler değil, sizin de dediğiniz gibi, "ıf there is a will, there is a way."
size de kolay gelsin.
saygılarımla.

15.04.2011 05:48    

makifyayan
Slm bana öle bi lisp lazım ki çizm yaptıgım dwgdeki offset degeri ile fillet-r degeri dwg yi sonradan acıtıgmda aynı kalsın.?

15.04.2011 14:05    

HIPHOP
Spline'ı line'a çeviren bir lisp var mı? veya yöntem.

15.04.2011 14:12    

ehya
Alıntı
HIPHOP :
Spline'ı line'a çeviren bir lisp var mı? veya yöntem.



Yeni sürümlerde PEDIT komutu ile pline nesnesine çevir. sonra patlat.

eski sürümlerde ise flatten komutu ile aynı şekilde pline nesnesine çevirip patlatabilirsin.

18.04.2011 18:42    

cordoba205
Linye numarası lispi varmı.Otomatik olarak linye numarası vermek için

23.04.2011 16:58    

yst
Selamlar,
yaklaşık 20 blok ile oluşturduğum, 100 civarında çizimim var. 20 blokta yapacağım değişiklikleri bu 100 çizime teker teker açıp blok güncellemesi yapmadan, daha kısa bir yoldan yapabilmek mümkün mü acaba? (blok ve çizimler 3 boyutludur.)
ilginize teşekkürler.

23.04.2011 18:35    

ProhibiT
100 çizminize 20 block'u xref ile insert etmiş olsaydınız, her açılışında çiziminizdeki blocklar kendiliğinden güncellenecekti. eğer iş işten geçti böyle yapmadınızsa, biraz daha detay yazarsanız, başka çözüm yolları da bulunabilir. kolay gelsin.

23.04.2011 19:48    

yst
Sn. prohibit,
iyi akşamlar. dün itibariyle çizimleri oluşturmaya başladım. ileride değişklik gerekirse ne yaparım diye aklıma geldi bugün. az önce de 50.Yi tamamladım. blok dosyalarını açsam, xref verebilirmiyim?
ınsert ederken mi xref vermek gerekiyor? blok adı zaten belli ama...
blok dosyalarında 3b solid nesneleri var. çizimlerde de blok olarak duruyorlar.
size de kolay gelsin. teşekkür ederim.

30.04.2011 23:18    

sersa34
Iyi günler ben alüminyum profil imalatındayım...Burdan bulduğum lisp büyük ve küçük polyline seçimini öngörüyordu..Ben ise dışını seçtikten sonra içinde 2-3-4-5 obje daha olabilecek parçalar için kesit alanını hesaplayacak birim mm2 olacak ve alüminyum özgül ağırlığı olarak2.71 olacak şekilde 1 m (1000 mm olarak) ağırlığını verecek şekilde lisp yapılırmı bunu öğrenmek istiyorum yardımcı olursanız sevinirim saygılarımla
ayrıca bu değerleri otomatik olarak bir antete koyabilirmiyiz bir yolu varmı teşekkürler...

ProhibiT (01.05.2011 02:54 GMT)

01.05.2011 03:24    

ProhibiT
Bazı durumlarda burada istek üzerine autolisp veya visula lisp fonksiyonlar yazıp paylaşıyoruz. bunu okur yazar arkadaşların yetişmesine yardımcı olmak amacıyla yapıyoruz. bazen de konu genel geçer bir ihtiyaca cevap verdiğinde yazabiliyoruz. bahsettiğiniz konuda bir fonksiyon yazmanın sanat değeri olacağına inanmıyorum affınıza mağruren. :)

bahsettiğiniz konuyu standart autocad komutlarıyla çok kolaylıkla halledebilirsiniz.

- area komutunun add ve subtract area özelliklerini kullanarak profilinizin alanını tek komutla bulabilirsiniz.

- bahsettiğiniz polyline gurubunu ele alıp, "bpoly" komutunu kullanarak ve pick point olarak dolu kısımda bir nokta seçerek bir "region" oluşturun. daha sonra da "massprop" komutuyla doğrudan doğruya dolu kısmınızın alanını bulabilirsiniz.

kolay gelsin.

01.05.2011 09:46    

sersa34
Sayın prohibit zaten bende dediğiniz şekilde kullanmaktayım ama yeni arkadaşlar var ve işlerimiz yoğun bazen bu tip hatalar yapılıyor yazıya dökerken bu nedenle hataların önüne bir nebze olsun geçebilmek adına böyle bir istekde bulunmuştum saygılarımla emeğinize sağlık

ProhibiT (01.05.2011 11:25 GMT)

12.05.2011 06:47    

RidvanKARACA
Çok basit aslında
Kod:

;;;==============================================
;;;  hazırlayan, m. şahin güvercin - 13-04-2011
;;;==============================================
(write-line "\nhazırlayan, m. şahin güvercin - www.autocadokulu.com")
(defun c:bbox (/ flo n obj mnp mxp ebat)
  (setvar "cmdecho" 0) (command "undo" "group") (vl-load-com)
  (setq flo (open (getfiled "çıkış kütüğü" "" "csv" 9) "w") n 0)
  (write-line "parça no;delta x;delta y;delta z" flo)
  (while (setq obj (car (entsel "\nselect 3dsolid object...")))
    (if (= "3dsolıd" (cdr (assoc 0 (entget obj))))
      (progn
        (setq obj (vlax-ename->vla-object obj))
        (vla-getboundingbox obj 'mnp 'mxp)
        (setq mnp (vlax-safearray->list mnp)
              mxp (vlax-safearray->list mxp)
              ebat (mapcar '(lambda (p1 p2) (abs (- p1 p2))) mnp mxp))
        (write-line (strcat (itoa (setq n (1+ n))) ";"
                      (rtos (nth 0 ebat)) ";"
                      (rtos (nth 1 ebat)) ";"
                      (rtos (nth 2 ebat))) flo))
      (write-line "\n*** seçilen obje 3dsolid olmalıdır. ***")))
  (write-line (strcat "\n  " (itoa n) " tane obje boyutu yazıldı."))
  (close flo) (setvar "modemacro" "") (command "undo" "e") (prin1)
)

obje seçmeye devam ettiğiniz sürece dosyaya ebat yazmaya devam eder.

kolay gelsin.

düzenleme:
bu fonksiyonu bir de böyle deneyin. dosyayı excel ile açarken, bir hata mesajı alırsanız "evet" seçip devam etmelisiniz.
Kod:

;;;==============================================
;;;  hazırlayan, m. şahin güvercin - 13-04-2011
;;;==============================================
(write-line "\nhazırlayan, m. şahin güvercin - www.autocadokulu.com")
(defun c:bbox (/ flo n obj mnp mxp ebat)
  (setvar "cmdecho" 0) (command "undo" "group") (vl-load-com)
  (setq flo (open (getfiled "çıkış kütüğü" "" "xls" 9) "w") n 0)
  (write-line "parça no;delta x\tdelta y\tdelta z" flo)
  (while (setq obj (car (entsel "\nselect 3dsolid object...")))
    (if (= "3dsolıd" (cdr (assoc 0 (entget obj))))
      (progn
        (setq obj (vlax-ename->vla-object obj))
        (vla-getboundingbox obj 'mnp 'mxp)
        (setq mnp (vlax-safearray->list mnp)
              mxp (vlax-safearray->list mxp)
              ebat (mapcar '(lambda (p1 p2) (abs (- p1 p2))) mnp mxp))
        (write-line (strcat (itoa (setq n (1+ n))) "\t"
                      (rtos (nth 0 ebat)) "\t"
                      (rtos (nth 1 ebat)) "\t"
                      (rtos (nth 2 ebat))) flo))
      (write-line "\n*** seçilen obje 3dsolid olmalıdır. ***")))
  (write-line (strcat "\n  " (itoa n) " tane obje boyutu yazıldı."))
  (close flo) (setvar "modemacro" "") (command "undo" "e") (prin1)
)


sayın saygıdeğer prohibit abicim; üstteki lispler çok işime yaradı. ayrıca tekrar teşekkür ederim. sizden alttaki lispe biraz düzenleme yapmanızı rica edeceğim. öncelikle 3d solid leri tek tek seçmek biraz zahmetli oluyor. bir çizimde bazen 50 ila 100 adet 3dsolid oluyor. bunu tek tek seçmek yerine çerceve ( dikdörtgen ) içine alarak tek seferde seçebilirmiyiz. bir de aynı ölçüde çizilen 3dsolidleri tek tek listemek yerine aynı ölçüde olan 3dsolidleri bir sefer yazıp sayılarını artırabilirmi? yardımlarınız için çok teşekkür ederim.

ProhibiT (13.05.2011 06:18 GMT)

20.05.2011 16:58    

sisecam
Selamlar benim bir ricam olacaktı, tabi ki mümkünse.

malzeme listesi düşünün bu malzeme listesi satırlar ve sütunlar içinde ve en solda ağırlıklar var..Toplam 45 poz diyelim ( bu 45 değişken ) .. ben bütün pozların ağırlıklarını seçip "enter" yapacağım sonra bana toplamı nereye yazmak istediğimi soracak, malzeme listesinin en altındaki toplam ağırlık kısmına tıkladığımda hepsinin toplamını oraya yazacak tekrar "enter" yaptığımda komut sonlanmış olacak. bu arada benim ağırlıklarımın küsuratları da olabileceği için küsurat ayrımları "." yada "," olabilecek. her ikisinide yapabilecek yani..

yardımcı olursanız sevinirim..

20.05.2011 18:29    

ProhibiT


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

linkinde paylaştığım c:cem fonksiyonu bahsettiğiniz işlemi kısmen yapar. seçilen gurup içindeki text objelerinin içeriklerindeki nümerik değerlerinin toplamını hesaplar.

ama, sizin bahsettiğiniz gibi gösterilen yere yazmak başka bir iş.


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

linkinde paylaştığım başka bir fonksiyon, bahsettiğiniz işlemi yapar. burada da ondalık ayracı (decimal separator) olarak nokta kabul eder. ondalık ayracı olarak virgül kullanılması ile ilgili olarak forumumuzda epeyce tartışıldı ve açıkçası bu konu benim canımı sıktı, o konuya hiç girmek istemiyorum.

kolay gelsin.

21.05.2011 14:15    

sisecam
Prohibit hocam sen sağ ol var ol :)

bazı projelerde ayıraçlar "," ile ayrılmış ama benim için önemli olan virgülüde noktayıda hesaplamasıydı .. 2. verdiğiniz lisp işimi gördü . bayada aramıştım forumda ama bakmakla görmek arasında fark varmış kusura bakmayın görememişim..

teşekkür ediyorum.
iyi çalışmalar.

21.06.2011 13:39    

kevin8686
Merhaba autocadokulu üyeleri...

sizden bir ricada bulanacaktım. seçtiğim bir nesnenin ait olduğu tüm layerlerı seçebilen lisp varmıdır acaba. ehya kardeşim bir lisp paylmış bununla ilgili ama ben uygulayamadım. yardımcı olabilecek arkadaşlara teşekkür ediyorum şimdiden. iyi çalışmalar..

21.06.2011 14:45    

ProhibiT


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

linkindeki sellayer fonksiyonunu bir deneyin.

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