02.12.2006 17:50    

kizdede
teşekür ederim emeğine sağlık

04.12.2006 12:34    

internetturk
Hacim hesabı ile ilgili bir lisp isteği.

Elimdeki 3 boyutlu bir cismin hacmini hesaplamak istiyorum.
Ama tabanından itibaren 10 cm yükseliklerle hacimler lazım.
Bunu lisple nasıl yaptırabilirim?
Eğer ekrranın bi yerine bunu yazdırabilirsem çok daha süper olacak :)


Not: Şu an 10 cm arayla subtract edip tek tek hacimleri yazıyorum ve büyük hacimlerde inanılmaz zor oluyor.

04.12.2006 21:19    

kizdede
arkadaşlar bir sorum olacak
lisp de ebatları her seferinde değişebilien bir dikdörgen cizdirmek ve bu dikdörtgenin boyu 2500 ve 2500 den büyük olduğu zaman tam ortadan iki ye bölecek şekilde bir cizgi cizdire bilirmiyiz
teşekürler

04.12.2006 23:20    

harunkilic
Lisp değil fakat işini görür umarım;
Genel Başlıklar > Programlama > AutoCAD VBA Makrolarını kısayol komutlarına dönüştürmek.. bölümünden yardım alarak aşağıdaki makroyu çalıştırabilirsiniz.

Kod:

Public Sub Rectangle_DivXLen_DivYLen()
''// KOD WCS'DE ÇALIŞIR
Dim Pnt1 As Variant: Dim Pnt2 As Variant
Dim Pnts(0 To 14) As Double
Static XLen As Double: Static YLen As Double
Const XYLen As Double = 2500 ''// DEĞİŞTİREBİLİRSİNİZ
Dim RecObj As AcadPolyline

On Error GoTo ExitSub_Rectangle_DivXLen_DivYLen

''// DİKTÖRTGEN KÖŞELERİ BELİRLİYORUZ ( ÖNCE SOL ÜST, SONRA SAĞ ALT KÖŞE )
Pnt1 = ThisDrawing.Utility.GetPoint(, "Specify upper left corner point (Sol Üst Nokta)")
Pnt2 = ThisDrawing.Utility.GetCorner(Pnt1, "Specify lower right corner (Sağ Alt Nokta)")
If Pnt1(0) >= Pnt2(0) Or Pnt1(1) <= Pnt2(1) Then Exit Sub

''// DİKDÖRTGENİ POLYLINE OLARAK ÇİZDİRİYORUZ
Pnts(0) = Pnt1(0): Pnts(1) = Pnt1(1): Pnts(2) = Pnt1(2)
Pnts(3) = Pnt2(0): Pnts(4) = Pnt1(1): Pnts(5) = Pnt1(2)
Pnts(6) = Pnt2(0): Pnts(7) = Pnt2(1): Pnts(8) = Pnt1(2)
Pnts(9) = Pnt1(0): Pnts(10) = Pnt2(1): Pnts(11) = Pnt1(2)
Pnts(12) = Pnt1(0): Pnts(13) = Pnt1(1): Pnts(14) = Pnt1(2)

Set RecObj = ThisDrawing.ModelSpace.AddPolyline(Pnts)

On Error Resume Next

''// 2500 SABİT ÖLÇÜSÜ YERİNE X VE Y EKSENLERİNDE AYRI AYRI ÖLÇÜLER BELİRLEYEBİLİRİZ
''// EĞER ÖLÇÜLERDEN BİRİ 0-SIFIR YA DA KENAR UZUNLUĞUNDAN FAZLA GİRİLİRSE SABİT SAYI (2500) KULLANILIR
''// KOD HER ÇAĞIRILIŞINDA BİR ÖNCEKİNDE BELİRLENEN DEĞERLER ENTER-SAĞ TUŞ İLE TEKRAR ATANABİLİR
XLen = ThisDrawing.Utility.GetDistance(Pnt1, "Division length on X-axis<" & Format(XLen, "#.##") & ">")
YLen = ThisDrawing.Utility.GetDistance(Pnt1, "Division length on Y-axis<" & Format(YLen, "#.##") & ">")

Dim lnPnt1(0 To 2) As Double: Dim lnPnt2(0 To 2) As Double

If XLen < Pnt2(0) - Pnt1(0) And XLen > 0# Then
    lnPnt1(0) = Pnt1(0) + XLen: lnPnt1(1) = Pnt1(1): lnPnt1(2) = Pnt1(2)
    lnPnt2(0) = lnPnt1(0): lnPnt2(1) = Pnt2(1): lnPnt2(2) = Pnt1(2)
        ThisDrawing.ModelSpace.AddLine lnPnt1, lnPnt2
ElseIf Pnt2(0) - Pnt1(0) > XYLen Then
    lnPnt1(0) = (Pnt1(0) + Pnt2(0)) / 2#: lnPnt1(1) = Pnt1(1): lnPnt1(2) = Pnt1(2)
    lnPnt2(0) = lnPnt1(0): lnPnt2(1) = Pnt2(1): lnPnt2(2) = Pnt1(2)
        ThisDrawing.ModelSpace.AddLine lnPnt1, lnPnt2
End If

If YLen < Pnt1(1) - Pnt2(1) And YLen > 0# Then
    lnPnt1(0) = Pnt1(0): lnPnt1(1) = Pnt1(1) - YLen: lnPnt1(2) = Pnt1(2)
    lnPnt2(0) = Pnt2(0): lnPnt2(1) = lnPnt1(1): lnPnt2(2) = Pnt1(2)
        ThisDrawing.ModelSpace.AddLine lnPnt1, lnPnt2
ElseIf Pnt1(1) - Pnt2(1) > XYLen Then
    lnPnt1(0) = Pnt1(0): lnPnt1(1) = (Pnt1(1) + Pnt2(1)) / 2#: lnPnt1(2) = Pnt1(2)
    lnPnt2(0) = Pnt2(0): lnPnt2(1) = lnPnt1(1): lnPnt2(2) = Pnt1(2)
        ThisDrawing.ModelSpace.AddLine lnPnt1, lnPnt2
End If


ExitSub_Rectangle_DivXLen_DivYLen:
       
End Sub

ehya (12.09.2008 20:38 GMT)

05.12.2006 19:56    

kizdede
emeğine sağlık bizim için uyraşmışsınız teşekürler ben bu nu nasıl çalıştırabilirim autocad 2007 kullanmaktayım

08.12.2006 10:09    

DOLUNAY1071
Ya arkadaşlar benim sizden bir isteğim olacak;
bu forumda oldukça işime yarayacak bir lisp buldum kendi çapımda bir iki düzenleme yaptım ama çapım yetmedi ki yapmak istediğim şeyleri yapamadım;
Bu lips tıkladığım noktanın koordinarlarını yazıyo önce y sonra X ancak ben bunun yan yana deyil de alt alta yazmasını istiyorum arasında kesit çizgisi olsun
yani kesili gibi (karayoluyla uğraşanlar bilirler nasıl işe yarayacağını)

işte lisp

----------- ----------------- ---------------
Kod:

;;; lips Kesit Kotları
;;; GÖKHAN DOLU
;;; Tüm hakları Dolunay_1071 aittir

(defun KK (/ nokta x y nokta_y yazi aciklama)
(prompt "
10/2005 © Gd  Koordinat yazımı.")
(setvar "CMDECHO" 1)

(while (= nokta nil)
(setq nokta (getpoint "
Koordinatı alınacak noktayı girin: "))
(if (= nokta nil) (princ "Kot noktasını girin..."))
)
(setq Y (car nokta)
X (cadr nokta))
(setq aciklama (strcat "Y:"(rtos x) "_ X:" (rtos y)))
(princ aciklama)
(setq nokta_y (getpoint ( strcat "
Yazının başlangıç noktasını girin /<Koordinat noktası>: ")))
(if (= nokta_y nil) (setq nokta_y nokta))
(command "text" "S" "" nokta_y "15" "0" aciklama)
(princ)
)




--------- -------------- --------------

bunu isteğim doğrultusunda düzenleyebilecek arkadaşlar bi zahmet yardım etsin

ehya (12.09.2008 20:39 GMT)

09.12.2006 11:50    

hsnulusoy
Arkadaşlar bana lazım olan lisp gemi inşaa ( çelik tekne ) üzerine shell ( dış kaplama ) saclarının açılımını yapan lisp programı.Bilen veya satan arkadaşların cevap yazmalarını bekliyorum saygılar.

09.12.2006 22:30    

kizdede
arkadaşlar secdiğimiz bir cizgi yada dikdörtgen gibi bir şekli 3 cm ara ile iki defa ofset atmasını ve bu cizgilerin renk ve cizgi tiplerini değiştiren bir lisp yapıla bilirmi

21.12.2006 12:38    

fatihgL
slm arkadaslar bendede ufak ama kullanisli bir lisp var.
metraj cikaranlar icin kullanisli.

cizgileri toplayabilyorsunuz.

ii calismalar arkadaslar.(forumda belki vardir bakmadim :))

Kod:

;Derya KILIÇ ağu'2000 Oflaz İnşaat
;çizimdeki toplam ARC ve LINE uzunluklarını hesaplar;
(defun c:top(/ temp sset ssl nsset i topyay topciz basaci sonaci boy bas son alfa)
  (prompt "\nUzunlukları Toplanacak Yay ve Doğruları Seçiniz.")
  (setq sset (ssget))
  (if (null sset)
    (progn
      (princ "\nBişey şeçilmedi.")
      (exit)
    )
  )
  ;; Validate selection set
  (setq ssl   (sslength sset)
        nsset (ssadd))
    (princ "\n<Seçilen objeler inceleniyor...>")
  (while (> ssl 0)
    (setq temp (ssname sset (setq ssl (1- ssl))))
    (if (or
          (= (cdr (assoc 0 (entget temp))) "LINE")
          (= (cdr (assoc 0 (entget temp))) "ARC")
           (= (cdr (assoc 0 (entget temp))) "CIRCLE")
        )
      (ssadd temp nsset)
    )
  )
  (setq ssl (sslength nsset)
        sset nsset
  )
  (print ssl)
  (princ " ARC, CIRCLE ve LINE objesi bulundu.")

   (setq i 0 topyay 0 topciz 0)
   (repeat ssl
         (setq elist (entget (ssname sset i)))
         (cond
               ((= (cdr (assoc 0 elist)) "ARC")
                      (setq   yaricap (cdr (assoc 40 elist))
                                 alfa (- (cdr (assoc 51 elist))
                                           (cdr (assoc 50 elist))
                                        )
                      )
                      (if (< alfa 0.0) (setq alfa (+ alfa (* 2 PI))))
                      (setq boy (* alfa yaricap)
                               topyay (+ topyay boy)
                      )
               );ARC
               ((= (cdr (assoc 0 elist)) "CIRCLE")
                      (setq yaricap (cdr (assoc 40 elist))
                                 boy (* 2 PI yaricap)
                                 topyay (+ topyay boy)
                       )
               );CIRCLE

              ((= (cdr (assoc 0 elist)) "LINE")
                     (setq bas (cdr (assoc 10 elist))
                                son (cdr (assoc 11 elist))
                                boy (distance bas son)
                                topciz (+ topciz boy)
                      )
              );LINE
         );cond
         (setq  i (1+ i))
   )
   (princ (strcat "\nYaylar = " (rtos topyay 2 2) " m. Doğrular = " (rtos topciz 2 2) " m. Toplam Uzunluk = " (rtos (+ topciz topyay) 2 2) " m"))
   (princ)
);defun
(princ "\n © 2000 Derya KILIÇ\n")
(princ "\ntopla.lsp yüklendi. TOP komutu ile çalıştırınız.")
(princ)

ehya (12.09.2008 20:39 GMT)

27.12.2006 13:48    

ceikibin
Selam arkadaşlar,
pozlama yapmak için kullanacağım şöyle bir lisp yapılabilir mi?
Ekranda windows ile seçtiğim rakamları, kaçtan başlayacağını sorduktan sonra bu rakamdan başlayarak 1 er 1er artıran ve daha sonra başka seçilecek olup olmadığını sorup, var ise kaldığı yerden seçilenlere devam edecek bir lisp yapılabilir mi? (sıralama çok önemli değil fakat seçilen window da önce soldan sağa, sonra alta doğru değiştirme yapabirse çok iyi olur)

27.12.2006 16:15    

harunkilic
Sen algoritmayı bitirmişsin zaten, bize bişey kalmamış...:satisfied

27.12.2006 22:00    

hebedebe
Alıntı
ceikibin :
Selam arkadaşlar,
pozlama yapmak için kullanacağım şöyle bir lisp yapılabilir mi?
Ekranda windows ile seçtiğim rakamları, kaçtan başlayacağını sorduktan sonra bu rakamdan başlayarak 1 er 1er artıran ve daha sonra başka seçilecek olup olmadığını sorup, var ise kaldığı yerden seçilenlere devam edecek bir lisp yapılabilir mi? (sıralama çok önemli değil fakat seçilen window da önce soldan sağa, sonra alta doğru değiştirme yapabirse çok iyi olur)



express/text/automatic text numbering
kısayolu da tcount..

kullanımı da şöyle:
text'leri seçtikten sonra neye göre sıralandıracağını sorar. select order seçerseniz seçim sırasına göre, x seçerseniz x eksenine göre, y seçerseniz de y eksenine göre sıralar.
--örneğin text'ler yanyana duruyorsa x seçersiniz ve numaralandırmayı soldan sağa doğru yapar. altalta duruyorlarsa y seçersiniz ve numaralandırma aşağıdan yukarıya yapılır.

daha sonra başlangıç numarasını ve kaçar kaçar artacağını aralarına virgül koyarak girersiniz.
--örneğin 1,2 girerseniz 1'den başlar ve ikişer ikişer artırarak numaralandırır. ya da 5,-1 girerseniz 5'ten başlayarak birer eksilterek numaralandırır.

sonra da overwrite (üzerine yaz)/prefix (önek)/suffix (son ek)/find&replace (bul&değiştir) seçenekleri çıkar.
--örneğin numaralandırmak istediğiniz text'lerin başında x yazsın istiyorsunuz. x harfini kopyalayıp komuta başlarsınız, ve prefix girersiniz. x harfini önek olarak saklar. overwrite derseniz de sadece rakamları yazar.

28.12.2006 09:57    

ceikibin
Tcount'un kullanımı hakkında bilgi verdiğiniz için çok teşekkür ederim. Artık numaralandırmayı tam istediğim gibi yapabiliyorum.

28.12.2006 18:25    

sanalmanyak
merhaba arkadaşlar makina ressamıyım
imalat resimleri ciziyorum benim sorunum parçaları detaylandırdıktan sonra poz numarası veremem için kolaylık saglayck bir lisp daha önce indirmiştim bu siteden yanlış hatırlamıyorsam ismi autolisp ti böyle bir lisp varmı elinizde teşekkür ederim..

09.01.2007 09:29    

poli
mrb arkadaslar benımde bır lısp e ıhtıyacım var kı proje uzerınde blok olarak lınye numarası verdıgımde 2 cı lınye aynı numara olarak verdıgımde benı uyaracak yanı bu numarayla zaten bır lınyenız var gıbısınden uyarı verecek elınde olan veya yazabılen bır arkadas yardımcı olursa cok sevınırım sımdıden tsk ler

09.01.2007 11:53    

admin
Bu tür bir lisp olduğunu sanmıyorum, çünkü yapmak çok kolay değil. Database kullanmak lazım.

09.01.2007 12:44    

harunkilic
Söylediğiniz çok kolay bir şekilde yapılabilir, fakat "lınye" nedir bilmiyorum. Konuyu net olarak anlatan özel mesaj gönderirseniz yardımcı olurum.

09.01.2007 13:10    

admin
Alıntı
harunkilic :
Söylediğiniz çok kolay bir şekilde yapılabilir, fakat "lınye" nedir bilmiyorum. Konuyu net olarak anlatan özel mesaj gönderirseniz yardımcı olurum.




Kolay olduğunu söylediğiniz konu şu:

Linye elektrik tesisatındaki hatlara (faz + nötr kablo hattı) verilen isimdir. AKS numarası gibi düşünebilirsiniz linye numarasını. Örneğin L1, L2, L3, L4 ... diye ardışık artarak gider ve bu yazı bir bloğun içinde olur. (Bir daire veya kare türü kuyruklu bir şekil) Şeklin içindeki yazı artarak değişecek, Her numarayı değişkenlere atayarak bellekte varsa uyar gibi bir if döngüsü oluşturulabilir ancak, bu aynı çizimi 2. kez açtığınızda işe yaramayacaktır. Çünkü değişken değerleri çizim kapatıldığında bellekten silinir. Bu nedenle database kullanmak lazım diye düşünüyorum.

Bir alternatifte hariçten bir dosyaya yazdırmak ancak oda sağda solda kalan dosyalar neticesinde sağlıklı bir çalışma ortamı ve doğru sonuç vermeyebilecektir.

Sizin farklı bir çözüm öneriniz varsa paylaşmanızı umuyorum, bende merak ettim.

09.01.2007 13:44    

harunkilic
Önerilerim şudur;

Durum 1;
Bloklar içinde attribute nesneler kullanılarak bu bilgilerin saklanması ve mevcut çizimde ya da AutoCAD oturumunda açık olan tüm çizimlerde ya da belirli bir path tanımlaması altında bulunan tüm dwg, dxf dosyalarda; bu dosyaların mevcut Acad oturumunda açık olmasına da gerek yoktur; hatta belirli AutoCAD çizimleri ile ilişkilendirilmiş Excel xls dosyalarında, "specific-özel" bir blok ismi ile ya da tüm bloklar kullanılarak bu attibute özelliklerindeki bilgiler alınabilir ve karşılaştırılabilir.

Durum 2;
Blok olmaslar dahi AutoCAD çizim içindeki nesnelerinin tümüne (!),Line, ViewPort, DimStyle, Autocad.Application.ActiveDocument.ModelSpace gibi nesneler dahil olmak üzere xData bilgileri atanıp bu bilgiler "Durum1" seçeneğinde belirtilen genişlikte sorgulanabilir. xData bilgileri nesne ile birlikte saklanır, yani dosya kaydedilip kapatıldığında bu bilgileri de kaydetmiş olursunuz.

Hali hazırda bu bahsettiklerimi uyguladığım ve bir çok iş arkadaşımın kullanımına sunduğum genel maksatlı,"Proje Yönetimi - Poz ve Antet Bilgisi Takip" uygulamalarım mevcut. AutoCAD 2007 ile kullanmaya başladığımız StyleSheet özelliği işimizi daha da kolaylaştırdı.

Bu uygulamadan "specific-özel" bir duruma göre birkaç kodu çekip kullanabiliriz.

Saygılar;

Alıntı
Sizin farklı bir çözüm öneriniz varsa paylaşmanızı umuyorum, bende merak ettim.

09.01.2007 14:02    

pantano
Merhaba Arkadaşlar,

Konular birbirine karıştı gitti bence. Yeni sorular yeni madde başlıklarında tartışılsa daha güzel olmaz mı?

iyi günler

Ö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: 2.081 saniye - Sorgu: 102 - Ortalama: 0.0204 saniye