27.11.2016 20:02    

122105asd
Merhaba , ilginiz için çok teşekkür ederim. Kapalı 100 adet pollyline var ve 100 adet pollyline için 100 adet attribute var
bu attributelerde kapalı alanın ismi ve başka özellikleri yazıyor . Ben bu attributeye kapalı pollylineların alan ve çevre özelliklerini eklemek istiyorum. Mevcutta var olana attributelerde yeni girdi için satır olmadıgı için yeni satır açıp değeleri yazması gerekebilir , yeni satır açamıyorsada sorun değil mevcut attributenin 5 satıra sahip diyelim son 2 satırına istediğim değerleri yazsa benim işimi görecektir. daha iyi anlatabilmek adına örnek bir lisp paylaşıyorum http://www.lee-mac.com/areafieldtoattribute.html bu adresteki lisp kapalı polyline seçiyoruz alan bilgisini alıyor seçtiğimiz attributedeki seçtiğimiz satıra ekliyor ben bu lispin çevre bilgisini eklemesinide istiyorum eğer yapabilirseniz çok ama çok işime yarayacak ilginize tekrar teşekkür ederim kolay gelsin

27.11.2016 20:05    

122105asd
biraz karışık anlattığımı farkettim toparlamak istiyorum
kapalı polyline nin alan ve çevre bilgisini herhangi bir attributeye yazdırmak istiyorum önce alan ve çevre bilgisini alacağım kapalı pollyline'a tıklayacagım sonrada yazılmasını istediğim attributenin yazılmasını istediğim satırına tıklayacağım ve yazacak.
şu şekildede yazabilir 1000(alan)-150(çevre) şeklinde araya ''-'' atarsa ben excelden o sütunu ayırıp alan ve çevre bilgilerine ayrı ayrı ulaşabilirim saygılar.

29.11.2016 08:03    

munurbabayigit
Merhaba, forumda biraz gezdim bulamadım bana sırayla numara verebilen lisp lazım numaranın başında, RN= sabit kalacak şekilde seçtiğim text'lere numara verecek.

Örn : AAAA Textini seçtiğim zaman RN=001
BBBB ----> RN=002 şeklinde.
RN sabit kalacak şekilde

29.11.2016 10:51    

Travaci
munurbabayigit


Böyle birşey olsa gerek


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

29.11.2016 11:59    

grapher
Herkese kolay gelsin. Sitenin içeriğini gerçekten çok beğendim. İçinde bulunduğum durumun aciliyetinden dolayı eğer daha önce böyle bir lisp mevcut ve ben görememişsem lütfen uyarın lakin ben bulamadım.

1 örnek üzerinden anlatırsam daha anlaşılır olur diye düşünüyorum. Örneğin benim elimde 1 polyline var ve kapalı şekilde. Bu polyline'ın hali hazırda özelliklerinde(PROP), alanını ve uzunluğunu görebiliyorum. Rica ettiğim lisp ise şu şekilde ;

Komutu girdiğim anda bana seçtiğim polyline'ın içinde kalan alanın adını yazabileceğim bir seçenek sunacak. Örneğin ben oraya Kutu1 yazdım.

Daha sonra bu polyline'ın çevre ve alan bilgilerini otomatik olarak alacak ve 3 ünü de alt alt'a yazacak. Yine örnek:

Kutu1
3 m
4,2 m2 gibi.

Tabii olarak lispi tekrar tekrar kullansamda yazdırma işlemini yaparken her birini ayrı 1 Attribute olarak kaydetmeli ve hepsini 1 Block altında toplamalı ki ben bunları Excel dosyasına çıkartabileyim.
Umarım derdimi anlatabilmişimdir. Yardımcı olursanız çok sevinirim, herkese iyi çalışmalar.

grapher (29.11.2016 12:41 GMT)

29.11.2016 12:19    

munurbabayigit
Alıntı
Travaci :
munurbabayigit


Böyle birşey olsa gerek


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





Teşekkür ederim. Tam aradığım program

30.11.2016 09:58    

grapher
Yukarıda bi istekte bulunmuştum. Aşırı ihtiyacım var. Bilen varsa bir yol göstersin lütfen.

30.11.2016 13:18    

utkub1084
Herkese merhaba,

Ekteki LISP bir nesne (line, circle, arc, polyline, spline, vb.) üzerinde seçilen iki nokta arasındaki mesafeyi hesaplıyor.

Hesaplanan mesafenin ikinci noktanın üzerine yazdırılmasını sağlayabilir miyiz?

Yardımlarınız için şimdiden teşekkür ederim.



222704-distancebetweenpoints.rar

30.11.2016 14:18    

Travaci
Kod:

utkub1084

Alert kısmının altına command satırını eklersin.
(alert .....
(command "_.text" p2 "" "" (rtos (abs (- d1 d2))))

30.11.2016 14:33    

utkub1084
Sayın Travaci çok teşekkür ederim.

Düzenlenmiş LISP ektedir.

222704-distancebetweenpoints2.rar

30.11.2016 23:01    

alumina
Alıntı
grapher :


Secilen polyline nesnenin isim, cevre ve alan bilgileri gosterilen noktaya attribute olarak yazilir. Cizim birimi mm olarak kabul edilir.

Kod:

(defun c:plt (/ ss st pt dz dc ls ns tg) (vl-load-com)
  (defun *error* (msg)
    (if (not (wcmatch (strcase msg t) "*cancel*,*exit*"))
      (princ (strcat "\nError: " msg)))
    (if ss (redraw (ssname ss 0) 4)) (setq *error* nil)
  )
  (defun m1 (p1 p2 p3 /)
    (vla-addattribute (vla-get-modelspace dc) 10 acAttributeModeVerify "" p1 p2 p3)
    (setq ls (cons (vlax-ename->vla-object (entlast)) ls)))
  (if (setq ss (ssget ":s" '((0 . "lwpolyline") (70 . 1))))
    (progn (redraw (ssname ss 0) 3)
      (if (setq st (getstring "\nPolyline name:"))
        (if (setq pt (getpoint "\nInsertion point:") dz (getvar 'dimzin))
          (progn
            (vla-startundomark (setq dc (vla-get-activedocument (vlax-get-acad-object))))
            (if (not (tblobjname "block" "pl-data"))
              (progn
                (m1 (vlax-3d-point pt) "AREA" "0.00 m²")
                (m1 (vlax-3d-point (polar pt (/ pi 2) 20)) "PERIMETER" "0.00 Mt")
                (m1 (vlax-3d-point (polar pt (/ pi 2) 40)) "NAME" "Name")
                (vla-CopyObjects dc (vlax-safearray-fill (vlax-make-safearray
                  vlax-vbObject (cons 0 (1- (length ls)))) ls) (vla-add
                  (vla-get-blocks dc) (vlax-3d-point pt) "pl-data"))
                (foreach m ls (vla-delete m))
              )
            )
            (vla-InsertBlock (vla-get-modelspace dc) (vlax-3d-point pt)
              "pl-data" 1 1 1 0) (setvar 'dimzin 0)
            (foreach m (vlax-safearray->list (vlax-variant-value (vla-GetAttributes
                (vlax-ename->vla-object (entlast)))))
              (setq ns (vlax-ename->vla-object (ssname ss 0)) tg (vla-get-Tagstring m))
              (vla-put-Textstring m (cond
                ((= tg "NAME") st)
                ((= tg "PERIMETER") (strcat (rtos (/ (vla-get-Length ns)
                  1000) 2 2) " Mt"))
                ((= tg "AREA") (strcat (rtos (/ (vla-get-Area ns) 1000000) 2 2) " m²")))
              )
            ) (vla-endundomark dc) (setvar 'dimzin dz)
          )
        )
      ) (redraw (ssname ss 0) 4)
    )
  ) (setq *error* nil) (princ)
)

01.12.2016 11:25    

grapher
Alıntı
alumina :
Alıntı
grapher :





Öncelikle ilgilendiğiniz için çok çok teşekkür ederim. Cahilliğimi mazur görün bir kaç sorum olacaktı. Ben bunu bir text dosyasına kaydedip .lsp uzantılı bir dosyaya çevirdim. Lisp'i AutoCAD'e yükledim. PLT komutuyla çalıştırdım ve benden 1 obje seçmemi istiyor. Polyline'ı seçiyorum ve komut bitiyor. Kısacası kodu çalıştıramadım acaba bir şeyi yanlış mı yaptım?

2. si Çizim birimini değiştirmek istesem kodun hangi bölümünü değiştirmeliyim? CM cinsine çevirme şansımız var mı?

Son olarak polyline'ın ismini biz mi giriyoruz?

İlgilendiğiniz için tekrar tekrar teşekkür ediyorum.

alumina (01.12.2016 12:17 GMT)

01.12.2016 12:27    

alumina
plt komutunu calistirdiginizda nesne secmeniz istenecek. polyline i sectikten sonra enter tusuna basmayin ve komut satirina bakin, "Polyline name:" iletisini goreceksiniz. Buraya kutu1 diye tanimladiginiz yaziyi yazin ve enter tusuna basip tekrar kout satırına bakın, "Insertion point:" iletisini goreceksiniz, ekranda blogun insert edilecegi noktaya tiklayin. Bu kadar. Cizim birimi cm olarak duzenlendi.

Kod:

(defun c:plt (/ ss st pt dz dc ls ns tg) (vl-load-com)
  (defun *error* (msg)
    (if (not (wcmatch (strcase msg t) "*cancel*,*exit*"))
      (princ (strcat "\nError: " msg)))
    (if ss (redraw (ssname ss 0) 4)) (setq *error* nil)
  )
  (defun m1 (p1 p2 p3 /)
    (vla-addattribute (vla-get-modelspace dc) 10 acAttributeModeVerify "" p1 p2 p3)
    (setq ls (cons (vlax-ename->vla-object (entlast)) ls)))
  (if (setq ss (ssget ":s" '((0 . "lwpolyline") (70 . 1))))
    (progn (redraw (ssname ss 0) 3)
      (if (setq st (getstring "\nPolyline name:"))
        (if (setq pt (getpoint "\nInsertion point:") dz (getvar 'dimzin))
          (progn
            (vla-startundomark (setq dc (vla-get-activedocument (vlax-get-acad-object))))
            (if (not (tblobjname "block" "pl-data"))
              (progn
                (m1 (vlax-3d-point pt) "AREA" "0.00 m²")
                (m1 (vlax-3d-point (polar pt (/ pi 2) 20)) "PERIMETER" "0.00 Mt")
                (m1 (vlax-3d-point (polar pt (/ pi 2) 40)) "NAME" "Name")
                (vla-CopyObjects dc (vlax-safearray-fill (vlax-make-safearray
                  vlax-vbObject (cons 0 (1- (length ls)))) ls) (vla-add
                  (vla-get-blocks dc) (vlax-3d-point pt) "pl-data"))
                (foreach m ls (vla-delete m))
              )
            )
            (vla-InsertBlock (vla-get-modelspace dc) (vlax-3d-point pt)
              "pl-data" 1 1 1 0) (setvar 'dimzin 0)
            (foreach m (vlax-safearray->list (vlax-variant-value (vla-GetAttributes
                (vlax-ename->vla-object (entlast)))))
              (setq ns (vlax-ename->vla-object (ssname ss 0)) tg (vla-get-Tagstring m))
              (vla-put-Textstring m (cond
                ((= tg "NAME") st)
                ((= tg "PERIMETER") (strcat (rtos (/ (vla-get-Length ns)
                  100) 2 2) " Mt"))
                ((= tg "AREA") (strcat (rtos (/ (vla-get-Area ns) 10000) 2 2) " m²")))
              )
            ) (vla-endundomark dc) (setvar 'dimzin dz)
          )
        )
      ) (redraw (ssname ss 0) 4)
    )
  ) (setq *error* nil) (princ)
)

01.12.2016 12:47    

grapher
Cevabıma teşekkür ederek başlıyorum.
PLT komutunu girdiğim zaman objeyi seçtiğim anda komut bitmiş kabul ediyor. =( Enter tuşuna basmadığım halde aynı malesef. Komutu giriyorum polyline ı tıklıyorum ve komut listesinde hiçbir yazı gelmiyor. komut listesinin akışı
şöyle ;


Command: plt
Select objects:
Command:

Acad 2017 kullanıyorum. Acaba onunla ilgili bi problem mi.

Aklıma geldi diye söylüyorum acaba ben kodu siteden kopyalarken mi bi hata oluyor? hazır bir lsp dosyası üzerinden deneyebilme şansımız var mı?

grapher (01.12.2016 13:00 GMT)

01.12.2016 13:35    

alumina
Alıntı
grapher :



Autocad 2017 bazi lisp kodlarinda problem cikarabiliyor. Onceki surumlerde deneyin.
asagidaki videoyu inceleyin.
https://cizimokulu.com/datas/users/333661-pl-att.rar

01.12.2016 13:43    

alumina
simdi 2017'de de denedim, calisiyor !!!!

01.12.2016 20:55    

grapher
Bu üzerimdeki şanssızlık mı artık bilemiyorum ama kafayı yemek üzereyim. Sayın alumina ilginiz için çok teşekkür ederim videoyu izledim ama yok yok yok yok bi türlü olmuyor. Sizde polyline seçtikten sonra komut satırında yazan Polyline name bende çıkmıyor. Sizde çalışan lsp dosyasını direk yollayabilir misiniz? belki kopyalamada bi sıkıntı oluyor?

Evdeki AutoCAD 2016'da da denedim onda da olmadı kodun aktarımı sırasında bi problem yaşıyorum sanırım. Ya da işim acele olduğundan aksilik yakamı bırakmıyor.

grapher (01.12.2016 21:10 GMT)

02.12.2016 05:27    

alumina
Secmeye calistiginiz nesnenin kapali polyline olduguna emin misiniz? Propertiesten kontrol edin, kapali olmayabilir.

02.12.2016 05:56    

given
Iyi gunler,

Kopyalamak istedigim bir objeyi ornegin 2000 mesafe girdigimde surekli olarak 4000, 6000, 8000 diye katlayacak sekilde ben istedikce kopyalayacak bir lisp ariyorum.

Not : 2000 i ornek olarak yazdim bu bazen 400000 veya 100000 da olabiliyor.

Yardimci olabilir misiniz?

02.12.2016 06:02    

Travaci
given


Array

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