Reklam

* E Posta Adresiniz:
* Kodu Girin:

Ö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] Sonraki Sayfa
İleti Yazar
31.12.2009 09:02
54552    
chico1907

[1] Yeni üye

Online Durumu

6 ileti
tekniker
kocaeli

merhaba prohibt

ilginiz için saolun tesekkürler.

31.12.2009 22:37
54569    
berferan68

[1] Yeni üye

Online Durumu

5 ileti
İn. Tek
ankara

Sayın ProhibiT

Örnek lisp süper oldu yalnız sorun şu ki bazı autocad dosyalarında (ki ben icad isimli bir program kullanıyorum) exceldeki koordinatlardan ilk şeklin koordinatlarını (arada virgüllü ve başında _pline komutu ile) kopyalayıp autocad komut satırına yapıştırıyorum yapıştırıyorum auotocadde çizdirdikten sonra gerekli değişiklikleri yapıyorum.

Burada iki sorunla karşılaşıyorum. Birincisi _pline ile çizdirdiğim ilk koordinatları hafızasından silmiyor. İkincisi ise daha önce bahsettiğim gibi orijin noktasını ben belirlediğim halde koordinatları oradan almıyor. 0,5-12,3 vs gibi koordinat alması gerekirken -4444698,-658325 gibi saçma sapan koordinatlar yazıyor.

Ayrıca ben boş bir sayfaya ilk şekli çizip lispi çalıştırınca koordinatları hala yukarıdaki gibi alıyor.

Bu durumda ne önerirsiniz.

01.01.2010 02:11
54571    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

Merhaba berferan68
"...orijin noktasını ben belirlediğim halde..." demişsiniz.
ucs ile orijin belirleyeceğinizi hiç düşünememiştim. Fonksiyonun aşağıdaki hali bütün problemlerinizi çözecektir umarım.
Kod:

(defun c:NokLs ()
  (setvar "cmdecho" 0)
  (setq cikut (open (getfiled "Nokta Listesi" "" "txt" 1) "w")
        plln (entget (car (entsel "\nPolyline seciniz."))))
  (while (setq nokta (cdr (assoc 10 plln)))
    (setq nokta (list (car nokta) (cadr nokta) (getvar "elevation"))
          nokta (trans nokta (cdr (assoc -1 plln)) 1)
          xko (car nokta) yko (cadr nokta)
          plln  (subst (list 11 (cdr (assoc 10 plln))) (assoc 10 plln) plln))
    (write-Line (strcat (rtos xko 2 2) (chr 9) (rtos yko 2 2)) cikut)
  )
  (close cikut) (princ)
)

Olayın Lisp ve programlama mantığıyla ilgilenen arkadaşlar için kısa bir açıklama vermek istiyorum.
Polyline hangi UCS'de (User Coordinate System) çizilirse çizilsin AutoCAD vertex noktalarını WCS'de (World Coordinate System) tutuyor. Biz programımızda, entget ve assoc 10'larla bu noktaları yakalıyoruz. Bu durumda bulduğumuz noktalar daima WCS de tanımlı oluyorlar.
Bu koordinatları o anki aktif UCS'ye çevirmek için trans komutunu kullanmak gerekiyor. Bu seferde başka bir problemle karşılaşıyoruz. trans komutu x, y ve z den oluşan 3 koordinat alıp gene 3'lü koordinattan oluşan bir nokta üretiyor. Halbuki, Polyline objesi 2 boyutlu bir objedir (3Dpolyline değil) ve vertex noktaları x ve y den oluşan 2'li koordinata sahipler.
trans komutuna parametre olarak girilince hata veriyor. Bunun için o an geçerli elevation değerini bu koordinatlara z değeri olarak ilave ettim. Koordinatları aktif UCS'ye çevirdikten sonra gene ilk iki değeri x ve y olarak aldım.
trans komutunun güzel bir özelliği var; genel formatı (trans point from to ...) burada from parametresi olarak object name kullandım, to parametresi olarak ta 1 (active UCS) kullandım. Polyline hangi koordinat sisteminde çizilirse çizilsin dosyaya yazılırken o anda aktif olan koordinat sitemine göre yazılıyor... İlginç bir deneyimdi benim için, epeyce yeni şeyler öğrendim

Selamlar, Sevgiler, Herkese Kolay Gelsin...


ProhibiT (01.01.2010 02:18 GMT)

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

01.01.2010 23:35
54578    
berferan68

[1] Yeni üye

Online Durumu

5 ileti
İn. Tek
ankara

Çok teşekkür ederim süpersiniz

06.01.2010 16:18
54687    
adsari

[2] Girişimci

Online Durumu

2 ileti
T.Ressam
Ankara

Merhaba arakadaşlar.
Benim çok açil bir sorunum var. Çözerseniz memnun olacağım.
Katı bir cismin hacmi, ağırlık merkezi gibi sorularıma cevap verecek bir komut vardı bulamıyorum.
Hatırlayan varsa lütfen yardımcı olurmusunuz.

06.01.2010 16:36
54688    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

massprop

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

08.01.2010 17:28
54745    
cngzklc

[5] Uzman

Online Durumu

53 ileti
İnşaat Teknik Ressamı (Çelik Konsrüksiyon)
Bursa

Selam Arkadaşlar,

Sizden bir lisp isteğim olacak.
Autocad içerisindeki malzeme listesini ( yada seçili yazıları) yazı olarak başka bir dosyaya (excell,txt veya world dosyası) atabileceğim bir lispe ihiyacım var.
Yardımcı olursanız sevinirim.
Şimdiden yardımcı olan ve olamayan herkese teşekkur ederim.

08.01.2010 18:24
54746    
aslanv

[5] Uzman

Online Durumu

86 ileti
Rest. Y. Mimar
İstanbul

bunun için lispe ihtiyacın olmaması gerek. Kullandığın versiyon ne bilmiyorum ama EATTEXT ile textleri de excel listesine atabilirsin.

08.01.2010 19:05
54748    
cngzklc

[5] Uzman

Online Durumu

53 ileti
İnşaat Teknik Ressamı (Çelik Konsrüksiyon)
Bursa

AutoCAD 2008'i kullanıyorum.
Çok teşekkur ederim Aslanv. Oldu.
Fakat burada malzemeleri hep alt alta atıyor. Yani

Poz
Miktar
Kesit
En
Boy
Kalite
P/1
2 Ad
25
450
800
S355J0
.... gibi devam ediyor.

Resimde malzeme listesi aşağıdaki gibi gösteriyor ve bu şekilde de atabilirmiyiz.

Poz Miktar Kesit En Boy Kalite
P/1 2 Ad 25 450 800 S355J0

Yardımın için çok teşekkur ederim. İşime yaradı.

11.01.2010 09:54
54774    
ec

[2] Girişimci

Online Durumu

21 ileti

Ankara

Bir lispe ihtiyacım var. Eğer yardımcı olabilirseniz çok sevinirim.

Proje içinde çeşitli layerlarda bol miktarda blok mevcut.
Bloklar doğru layerlarda değil.
Ancak projenin içinde tüm bloklardan doğru layerda bulunan 1’er blok topluca bulunmakta.
Bu doğru layerlarda bulunan bloklar baz alınarak proje içindeki tüm blokları layerlarına alan bir lisp.

İlgilenen ve emek veren arkadaşlara şimdiden teşekkürler.

11.01.2010 12:40
54780    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

Alıntı
ec :
Bir lispe ihtiyacım var. Eğer yardımcı olabilirseniz çok sevinirim.

Proje içinde çeşitli layerlarda bol miktarda blok mevcut.
Bloklar doğru layerlarda değil.
Ancak projenin içinde tüm bloklardan doğru layerda bulunan 1’er blok topluca bulunmakta.
Bu doğru layerlarda bulunan bloklar baz alınarak proje içindeki tüm blokları layerlarına alan bir lisp.

İlgilenen ve emek veren arkadaşlara şimdiden teşekkürler.



Bu işlemi QSELECT komutuyla yapabilirsiniz...
Aynı isimde ki blok grubunu QSELECT ile seçtirip istediğiniz layera atayabilirsiniz...

11.01.2010 13:01
54781    
miyatu

[8] Kıdemli Uzman

Online Durumu

142 ileti
Tekniker
*ISTANBUL*

referans olarak gosterdigin block ile ayni isimdeki blocklari referans block un layer ina atan lisp

Kod:

(defun c:bld ()
  (setq ref_blok (entsel "\n referans blogu sec:"))
  (setq ref_layer (cdr (assoc 8 (entget (car ref_blok)))))
  (setq ref_ad (cdr (assoc 2 (entget (car ref_blok)))))
  (terpri)
  (prompt "tum bloklari sec:")
  (setq sset (ssget  '((0 . "INSERT"))))
  (setq ns (sslength sset))
  (setq ent1 (ssname sset 0))
  (setq ds 0)
  (while (/= ent1 nil)
    (setq liste (entget ent1))
    (setq ad (cdr (assoc 2 liste)))
    (if (= ref_ad ad)
      (progn
    (setq liste (subst (cons 8 ref_layer) (assoc 10 liste) liste ))
    (entmod liste)))
    (setq ds (+ ds 1))
    (setq ent1 (ssname sset ds))))


ins. isinize yarar kolay gelsin

Kendini gelistirmeyen insanlar, bildiklerini paylasmaya korkarlar...

11.01.2010 13:42
54783    
kemalizmir3535

[1] Yeni üye

Online Durumu

10 ileti
harita teknikeri
izmir

iyi günler. yardımınızı istediğim konu, excell.den aktardığım noktaların numara adlarının görünmemesi, excellden noktaları atıyorum ama, sadece noktalar olarak, bunların numaralarının da görünmesini rica edecektim. bu konuda lsp.niz varsa yardımcı olursanız sevinirim

11.01.2010 13:48
54784    
cngzklc

[5] Uzman

Online Durumu

53 ileti
İnşaat Teknik Ressamı (Çelik Konsrüksiyon)
Bursa

Alıntı
miyatu :
Alıntı
PLAKTON :
arkadaşlar siteyi inceledim bulamadım autocad deki sectiğimiz yazıları .txt formatına dönüştürebilecek bir lisp elinizde mevcutmudur çok acil


Kod:

;autocad ortamında seçilen textleri seçim sırasına göre alt alta, c nin altındaki miyatu.txt dosyasına yazan lisp
;hazırlayan miyatu
;13 mayıs 2009
;not: dosya içinde daha önceden yazılmış yazılar varsa enson satırdan yazmaya devam edecektir. önceki bilgiler kaybedilmez.
(defun c:txt()
  (setq f (open "c:\\mıyatu.txt" "a"))
  (setq sec_txt (entsel "\n txt dosyasına yazılacak texti sec:"))
  (while (= sec_txt nil)
    (setq sec_txt (entsel "\n txt dosyasına yazılacak texti sec:")))
  (while (/= sec_txt nil)
    (setq txt_al (cdr (assoc 1 (entget (car sec_txt)))))
    (write-line txt_al f)
    (setq sec_txt (entsel "txt dosyasına yazılacak diğer texti sec:")))
  (close f))

inş. işine yarar...

kolay gelsin



Öncelikle paylaştığınız bilgi için teşekkur ederim.
"txt" komutunu çalıştırdığımda "; error: bad argument type: streamp nil" hatasını veriyor ve herhangi bir dosya oluşturmuyor.
Ayrıca text'leri tek tek seçerek işlem ilerliyor. Ben yapacağım işlem malzeme listesini txt veya excel dosyasına atmak.
ASLANV arkadaşım sağolsun EATTEXT komutunu önermişti fakat onda da her kelimeyi alt alta atıyor. Aşağıdaki gibi yapabileceğimiz bir lisp varmı yada komut.

Poz Miktar Kesit En Boy Kalite
P/1 2 Ad 25 450 800 S355J0
P/2 2 Ad 30 350 700 S355J0
P/3 2 Ad 10 250 500 S355J0

11.01.2010 16:14
54790    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

ec arkadaşımızın sorduğu sorunun en sade ve güzel çözümü Harbi65 hocamın verdiği yol bence.
miyatu arkadşımızın verdiği Lisp fonksiyonla da çözülür elbette. Söz konusu Lisp;
Kod:

(defun c:bld ()
  (setq ref_blok  (entget (car (entsel " referans blogu sec:")))
        ref_layer (cdr (assoc 8 ref_blok))
        ref_ad    (cdr (assoc 2 ref_blok))
        sset      (ssget "X" (list (cons 0 "INSERT") (cons 2 ref_ad))))
  (command "change" sset "" "p" "la" ref_layer "")
  (prin1)
)
şeklinde daha kısa da yazılabilir...

cngzklc sizin sorunuza gelince;
aslanv arkadaşımızın size önerdiği komut her attribute objesini ayrı bir satır olarak extract eden bir komut. miyatu arkadaşımız tarafından hazırlanmış lisp fonksiyon ise, text objeler için hazırlanmış. Anladığım kadar sizin objeleriniz Attribute, bu nedenle bad argument hatası veriyor. Fonksiyon text beklerken attribute gösterince hata veriyor yani...

Probleminizi çözebileceğiniz basit bir program yazılabilir elbette.
Biraz daha detaylı bilgiye ihtiyaç var yalnız. Eğer çok acele değilse,
ve bana çalıştığınız dosyayı (hiç olmazsa ilgili metraj tablosunu) mail olarak gönderebilirseniz...
İlk fırsatta yazmaya çalışırım.

Aslında bu konunun kesin ve net çözümü,
C:\Program Files\AutoCAD XXXX\Sample\ActiveX\ExtAttr\ klasöründe bir örnekte verildiği gibi AutoCAD ActiveX özelliğini kullanarak Visual Basic ile Excel altında yazılacak bir program. Daha önce benzer şeyler yazdım ama, duruma özel Visual Basic programlar olarak kaldılar...

Kolay gelsin...


ProhibiT (11.01.2010 16:20 GMT)

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

11.01.2010 22:01
54794    
miyatu

[8] Kıdemli Uzman

Online Durumu

142 ileti
Tekniker
*ISTANBUL*

Alıntı
ProhibiT :
ec arkadaşımızın sorduğu sorunun en sade ve güzel çözümü Harbi65 hocamın verdiği yol bence.
miyatu arkadşımızın verdiği Lisp fonksiyonla da çözülür elbette. Söz konusu Lisp;
Kod:

(defun c:bld ()
  (setq ref_blok  (entget (car (entsel " referans blogu sec:")))
        ref_layer (cdr (assoc 8 ref_blok))
        ref_ad    (cdr (assoc 2 ref_blok))
        sset      (ssget "X" (list (cons 0 "INSERT") (cons 2 ref_ad))))
  (command "change" sset "" "p" "la" ref_layer "")
  (prin1)
)
şeklinde daha kısa da yazılabilir...

cngzklc sizin sorunuza gelince;
aslanv arkadaşımızın size önerdiği komut her attribute objesini ayrı bir satır olarak extract eden bir komut. miyatu arkadaşımız tarafından hazırlanmış lisp fonksiyon ise, text objeler için hazırlanmış. Anladığım kadar sizin objeleriniz Attribute, bu nedenle bad argument hatası veriyor. Fonksiyon text beklerken attribute gösterince hata veriyor yani...

Probleminizi çözebileceğiniz basit bir program yazılabilir elbette.
Biraz daha detaylı bilgiye ihtiyaç var yalnız. Eğer çok acele değilse,
ve bana çalıştığınız dosyayı (hiç olmazsa ilgili metraj tablosunu) mail olarak gönderebilirseniz...
İlk fırsatta yazmaya çalışırım.

Aslında bu konunun kesin ve net çözümü,
C:\Program Files\AutoCAD XXXX\Sample\ActiveX\ExtAttr\ klasöründe bir örnekte verildiği gibi AutoCAD ActiveX özelliğini kullanarak Visual Basic ile Excel altında yazılacak bir program. Daha önce benzer şeyler yazdım ama, duruma özel Visual Basic programlar olarak kaldılar...
Kolay gelsin...





hocam onerınızı bende dusundum ama lısp yazarken ozellıkle block ve textlerde command fonksıyonunu kullanmamaya kararverdım cunku bu nesneler ıcın sıstem ayarlarına gore kullanılan komut farklılık gosterebılıyor

bır dıger konu ıse lıspe yenı baslayan arkadaslar ıcın yazdıgım lısplerın yol gosterıcı olmasını ıstıyorum...

herkese kolay gelsın...

Kendini gelistirmeyen insanlar, bildiklerini paylasmaya korkarlar...

11.01.2010 22:32
54795    
ec

[2] Girişimci

Online Durumu

21 ileti

Ankara

Emeğiniz için teşekkürler.

Bu lispi çoklu seçimle de kullanabilecek duruma getirebilir miyiz.
Her blok için ayrı ayrı bu lispi kullanmak yerine tek seferde bu işlemi yapabilir miyiz.
Çalıştığım dosyalarda doğru layerda bulunan bloklar birarada bulunuyor.
Dolayısıyla daha pratik olacağını düşünüyorum.

12.01.2010 11:47
54804    
chico1907

[1] Yeni üye

Online Durumu

6 ileti
tekniker
kocaeli

PROHİBT;

HOCAM BENİM GÖNDRMİŞ OLDUGUM EGZANTRİK REDÜKSİYONLA İLGİLİ RESİMİ İNCELEME ŞANSINIZ OLDUMU ACABA?İYİ ÇALIŞMALAR KOLAY GELSİN...

12.01.2010 12:43
54808    
miyatu

[8] Kıdemli Uzman

Online Durumu

142 ileti
Tekniker
*ISTANBUL*

Alıntı
ec :
Emeğiniz için teşekkürler.

Bu lispi çoklu seçimle de kullanabilecek duruma getirebilir miyiz.
Her blok için ayrı ayrı bu lispi kullanmak yerine tek seferde bu işlemi yapabilir miyiz.
Çalıştığım dosyalarda doğru layerda bulunan bloklar birarada bulunuyor.
Dolayısıyla daha pratik olacağını düşünüyorum.



Kod:

(defun c:bld()
  (prompt "referans bloklari sec:")
  (setq ref_blok_set (ssget '((0 . "INSERT"))))
  (setq ns (sslength ref_blok_set))
  (while (< 0 ns)
    (setq ref_ad (cdr (assoc 2 (entget (ssname ref_blok_set ns)))))
    (setq ref_layer (cdr (assoc 8 (entget (ssname ref_blok_set ns)))))
    (setq sset (ssget "X" (list (cons 0 "INSERT") (cons 2 ref_ad))))
    (setq ns1 (sslength sset))
    (setq ent1 (ssname sset 0))
    (while (< 0 ns1)
      (setq liste (entget ent1))
      (setq liste (subst (cons 8 ref_layer) (assoc 10 liste) liste ))
      (entmod liste)
      (setq ns1 (- ns1 1))
      (setq ent1 (ssname sset ns1)))
    (setq ns (- ns 1))))


sanirim bu isini gorur test etmedim herhangi bir hata ile karsilasirsan tekrar denerim...

Kendini gelistirmeyen insanlar, bildiklerini paylasmaya korkarlar...

12.01.2010 15:27
54811    
ec

[2] Girişimci

Online Durumu

21 ileti

Ankara

miyatu teşekkür ederim.

ama çalıştıramadım. sanırım bir hata var.

şu şekilde;

Command: BLD
referans bloklari sec:
Select objects: Specify opposite corner: 6 found

Select objects:
error: bad argument type: lentityp nil

Ö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] Sonraki Sayfa
Copyright © 2004-2018 | Tüm Hakları Saklıdır | 684 | Site haritası | İstatistikler | Hakkımızda | Kadromuz | Gizlilik | Reklam