15.08.2018 10:00    

turgaygirgin
Slm,

Bir çizim dosyam var, içinde de muhtelif layer larım var. başlangıç ta bunların birkaç tanesi freeze edilmiş, bir kaç tanesi kilitli birkaç tanesi off
durumunda.

autolisp ile

(command "_.layer" "_off" "*" "_no" "")
(command "_.layer" "_on" "layer1,layer2,layer3" "")

dedim işlemlerimi yaptırdım.

fonksiyonumu bitirirken layer larımın başlangıçtaki ayarlara dönmesini nasıl sağlayabilirim.

böle bişey mümkünmüdür?
teşekkür ederim.

16.08.2018 12:16    

alumina
Alıntı
turgaygirgin :

Kod:

(defun c:ly (/ k z)
  (defun m1 (p1 p2 /)
    (entmod (subst (cons p1 p2) (assoc p1 en) en)))
  (setq k (tblnext "layer" t))
  (while k (setq z (cons (list (cdr (assoc 2 k))
    (cdr (assoc 62 k)) (cdr (assoc 70 k))) z)
      k (tblnext "layer")))
  .
  .
  .
  .
  .
  .
  (mapcar '(lambda(a) (setq en (entget (tblobjname
    "layer" (car a)))) (m1 62 (cadr a))
      (m1 70 (caddr a))) z)
  (prin1)
)

30.08.2018 10:45    

turgaygirgin
Alıntı
alumina :




Hocam çok saolun teşekkür ederim. Problemi layerisolate ve unisolate ile çözdüm. yalnız bu kodu da mutlaka değerlendireceğim.
yalnız merak ettim, ben daha önce ana fonksiyon içinde subfonksiyon yazın ca hata vermişti. Siz burada ly fonksiyonu içinde m1 fonksiyonu
tanımlamışsınız. Program içine ekleme yapmadan test ettiğimde. herhangi bir hata mesajı almadım. subfonksiyonları ana fonksiyonun içinde de tanımlayabiliyormuyduk ?

Birde,
hernekadar istemesem de fonksiyonlarımın içinde command lar kullanıyorum. Hatch yapmakla ilgili bir problemim var.Yardımcı olursanız sevinirim.

(command "-boundary" ent "")
(setq ss (entlast))
(setq bonokta (bo-Pts ss)) ; bo-pts sub fonksiyon,lwpolyline nın kırık noktalarının koordinatlarını listeliyor.

(setq mahblk (ssget "_cp" bonokta '((0 . "insert") (-4 . "<or") (8 . "A-Tefriş ISLAK") (8 . "A-Tefriş ODA") (-4 . "or>")))) ile de

boundry içindeki objeleri de seçtirdim.

ve Hatch yapmak istiyorum.

Mehmet Şahin Hocamızın kitabında bu konu ile ilgili bir bilgi bulamadım.
İnternette de turkçe kaynak bulmak zor. en sonun da şöyle bir komut buldum;

(command ".hatch" "u" 90 0.05 "" "all" "") 90 açı, 0.05 hatch ölçeği ( all ) bütün objeler olmalı . fakat u nedir. hatch sitili yok.

visual lisp ile ilgili daha çok bilgi var.Ama bende de visuallisp bilgisi yok.

(setq Hatch (vla-AddHatch *ModelSpace* acHatchPatternTypePreDefined "ANSI31" :vlax-True))

burada hatch tanımlanıyor pattern predefined model space de olacağı falan.

(vlax-invoke hatch 'AppendOuterLoop (list pline))

burada da hatch sınırları belirleniyor.

(vla-evaluate hatch)

ve hatch uygulanıyor.

visual lisp kullanarak bu şekilde yaptırırsak sınır içindeki objeleri görmezden gelerek tarayacak.

Siz veya Diğer Hocalarımız yardımcı olursa sevinirim.
Sınır Koordinatları belli ( bonokta )
İçindeki objeler seçili ( mahblk )

Hatch yapmak istiyorum.Ne yapmalıyım.

Teşekkürler.Saygılar.

30.08.2018 11:35    

alumina
Alıntı
turgaygirgin :


m1 fonksiyonu ana fonksiyonun icinde veya disinda tanimlanabilir. Hatch ornekleride asagidadir. Ilk ornekte hatch nesneleri toplu olarak create edilir ve herhangi bir hatch nesnesi secildiginde hepsi birden secilir. Ikınci ornekte hatch nesneleri ayri ayri create edilir.

Belirtilen koordinatlar icinde kalan nesnelere hatch uygulanir. "_WP" yerine "_CP" olarak secim yapilirsa koordinatlara temas eden nesnelerede hatch uygulanir.
Kod:

(defun c:h1 (/ ss)
  (if (setq ss (ssget "_WP" '((1000 1000) (2000 1000)
        (2000 2000) (1000 2000))))
    (progn (setvar 'cmdecho 0) (acet-undo-begin)
      (command "._hatch" "ANSI31" "0.5" "0" ss "")
      (acet-undo-end) (setvar 'cmdecho 1))
  ) (prin1)
)


(defun c:h2 (/ ss z)
  (if (setq ss (ssget "_WP" '((1000 1000) (2000 1000)
        (2000 2000) (1000 2000))))
    (progn (setvar 'cmdecho 0) (acet-undo-begin)
      (repeat (setq z (sslength ss))
        (command "._hatch" "ANSI31" "0.5" "0"
          (ssname ss (setq z (1- z))) ""))
      (acet-undo-end) (setvar 'cmdecho 1))
  ) (prin1)
)

31.08.2018 12:36    

Travaci
turgaygirgin


Komut için "._-hatch" komutunu kullanıp alt fonksiyonlardan "Select" için alt fonksiyonları
Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle/SUbobject/Object
kullanabilirsin.
alumina


Tek nesne için undo kullanımı gereksiz, command kullandığımızda autocad undoyu kendi koyuyor.

31.08.2018 12:53    

tempuser
Herkeze merhaba,
Bir yazı içindeki "X" leri "x" e "-" leri "@" e "B" leri de "L" e nasıl çeviririz.

Birde neden sürekli logout oluyor kendi kendine ?

tempuser (31.08.2018 13:12 GMT)

31.08.2018 19:16    

alumina
Alıntı
tempuser :

"Find" komutu... Tek tek cevirir ama cevirir.

31.08.2018 21:01    

tempuser
Hocam lisp yazabilirmisiniz.

01.09.2018 01:39    

alumina
Alıntı
tempuser :

Kod:

(defun c:ts (/ ss m n s)
  (if (setq ss (ssget '((0 . "text") (1 . "*X*,*-*,*B*"))))
    (progn (acet-undo-begin)
      (repeat (setq m (sslength ss))
        (setq m (1- m) n (entget (ssname ss m)) s (assoc 1 n))
        (entmod (subst (cons 1 (vl-string-translate
          "X-B" "x@L" (cdr s))) s n))) (acet-undo-end)
    )
  ) (prin1)
)

03.09.2018 22:01    

turgaygirgin
Selamlar,

Dcl ile ilgili bir sorunum var yardımcı olabilirmisiniz lütfen.

test1 : dialog {
label = "test1";
: row {
: column { : popup_list { key = "lst1"; label = ""; edit_width = 20; fixed_width_font = false; }//list 1
: popup_list { key = "lst2"; label = ""; edit_width = 20; fixed_width_font = false; }//list 2
: popup_list { key = "lst3"; label = ""; edit_width = 20; fixed_width_font = false; }//list 3
: row { : button { key = "bt1"; label = "<<Prev"; is_default = false; width = 8; height = 1; }//prv buton
: button { key = "bt2"; label = "Next>>"; is_default = false; width = 8; height = 1; }//nxt buton
}//prv nxt buton row
: row { : button { key = "accept"; label = " Okay "; is_default = true; width = 8; height = 1; }//ok buton
: button { key = "cancel"; label = " Cancel "; is_default = false; is_cancel = true; width = 8; height = 1; }//cancel buton
}//Ok_Cancel buton row
}//List buton column

:column {
:image_button { key = "slide1"; color = -2; width = 20; aspect_ratio = 0.5; alignment = left; height = 4; } //image buton1
}//image buton1 column
:column {
:image_button { key = "slide2"; color = -2; width = 20; aspect_ratio = 0.5; alignment = left; height = 4; } //image buton2
}//image buton1 column
:column {
:image_button { key = "slide3"; color = -2; width = 20; aspect_ratio = 0.5; alignment = left; height = 4; } //image buton3
}//image buton1 column
.....
.....
.....
}//Ana Row
}//Dialog
DCL dosyam bu şekilde.lisp kodlarını da yazıp test ettim. Ekran görüntüsü Nasıl eklenir bilmediğim için (Anlatırsanız Onuda yapmaya çalışırım.) anlatmaya çalışacağım. 3 adet popup listenın altında 4.satırda prev ve Next butonları ,5.satırda ok ve cancel butonları var.
bu butonların sağ tarafında da toplamda 10 adet olacak ama 3 adet image buton kodu yazdım,(kalabalık olmasın diye).
sorunum şu:
* butonlarımın toplam genişliği image butonlarla aynı olsun istiyorum,popup listlerin genişliğini ayarladım.ama altında bulunan 4 adet butonun genişliğini pek çok şey denememe rağmen ayarlayamadım.
** Standart bir genişiliği mi var.Sistem değişkenleri ile mi alakalıdır, nedir?
*** width leri edit_width , yaptım olmadı. Boxed_column içine aldım olmadı.
**** Prev ve Next butonlarını koydum ama açıkçası onları da nasıl kullanacağım bilmiyorum. Dcl dosyasında slide sayısı kadar image button column mu açmalıyım. yoksa lisp içinde ayrı listeler mi oluşturmalıyım?

Yardımlarınız için şimdiden
çook ama çok teşekür ederim.

04.09.2018 06:14    

Travaci
Ok_cancel standartdır. Aşağıdaki gibi butonlarını kendin yapmalısın.


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

04.09.2018 11:04    

turgaygirgin
Alıntı
Travaci :




Saolun Hocam.Biraz düzenledim.dcl Label kısmındaki yazı karakterinin uzunluğuna da bağlı olarak butonun boyutu değişiyor.
Tam da benim istediğim gibi diyemesemde makul bir görünüme kavuşturdum.
Şimdi lisp içinde actionları düzenlemeye başlayabilirim. Biraz baktım ama şuana kadar elle tutulur bir bilgi göremedim.
Dcl açılınca 10 adet image buton görünecek. ama benim 25 image m var. açılan iletişim kutusunda next ve previous butonları ile bunları nasıl
kontrol edebilirim. Yardımcı olabilirmisiniz?

Teşekkür Ederim

04.09.2018 13:29    

Travaci
Yapamadığın kısım neyki ? Bu zamana kadar yaptığın işlemleri sadece tekrarlayacaksın.

04.09.2018 15:06    

turgaygirgin
Alıntı
Travaci :



Slm,

Hocam hazırladığım dcl de sol tarafta butonlarım sağ tarafında da 10 adet image karom olacak. bende 25 tane slide dosyası var.
başlangıçta ilk 10 slide ile bu karoları fill imaje ile doldurdum. next butonuna tıklayınca sonraki 10 slide ekrana gelecek.tekrar nexte tıklayınca diğer 5 slide ile karoları dolduracak.previous butonuna tıklayınca .önceki 10 slide ekrana gelecek. yapamadığım kısım bu.

Teşekkürler Saygılar

10.09.2018 12:58    

turgaygirgin
Alıntı
Travaci :




Hocam tamamdır.sorunu çözdüm ama şimdide şöyle bir sorun oldu. previous ve next button larını aktif ve deaktif edemiyorum. Başlangıcta ilk slide 0 index numaralı.Previous butonunu seçersem ; error: bad argument value: non-negative: -10 hatası veriyor. Yani benim başlangıçta previous butonunu seçilemez yapmam gerekiyor. (mode_tile "prv" 1) yaptım , olmadı.Başka bir yöntemi mi var.Siz söyleyebilirmisiniz.Veya bilen bir arkadaş yardımcı olabilirmi ?

Teşekkür ederim.
Saygılar

12.09.2018 17:27    

Travaci
Turgay programını kuculterek (Ör; 10 karo deılde 1 , dialog ekranı kapandıktan sonra yapılcak işleri silip) paylasırsan yardımcı oluruz, bu sekılde sorduğun sorular herzaman havada kalıcak cevap alamıyacaksın. Söylediğin hatalar standart bırsey deıl, heryerde bu hatalarla karşılaşıyoruz. Oyüzden sende bıze yardımcı ol. Vlide editorunu kullanmıyorsan kullan bızden once o sana yardımcı olucak hataları gosterıcektır.

14.09.2018 08:09    

turgaygirgin
Alıntı
Travaci :




Anladım hocam tamam. uyarılarınızı dikkate alacağım.lisp yazarken Vlide editörünü kullanıyorum.bu arada sorunu hallettim.
Teşekkür Ederim.

29.09.2019 11:09    

BLack|E
Herkese merhaba,

aşağıdaki kod'u yazmaya çalıştım ama başaramadım.
amacım text ya da Mtext ile oluşturulmuş İçinde mm olarak yazan rakam var örneğin 275.75
ben bu yazıyı seçip dışarıya tıkladığımda içeriği architectural - mimarı (feet ve kesir biçimli inch olarak çevirmiş
text dosyası oluşturmak istiyorum.
Acaba nerede hata yapıyorum yardımcı olabilirseniz sevinirim.

Kod:

(defun c:yi ()
  (setq sec (entsel "\nYaziyi Seciniz..:"))
  (setq dxff (entget (car sec)))
  (setq ici (cdr (assoc 1 dxff)))
(setq yazi_i (distof ici 4))
  (setq nk (getpoint "\nYazinin olusmasi icin Tiklayin..."))
(command "_.Text" nk "" "" yazi_i "" "")
  (princ))

29.09.2019 12:28    

alumina
Alıntı
BLack|E :


275.75mm architectural sistemde 0' - 10 6/7" veya sadece 10 6/7" olarak gosterilir.

1 inch = 25.4mm
1 feet = 12 inch

Elde ettiginiz 275.75 degerini architectural sisteme donusturup oyle yazdirin.

29.09.2019 21:01    

BLack|E
Hocam aşağıdaki kod'u düzeltince sonuca ulaştım.. Text'en aldığım değeri 25,4'e böldürmem gerekmiş.
Kod:

(setq yazi_in (rtos (/ yazi_mm 25.4) 4 4))

Teşekkür ederim.

Copyright © 2004-2022 SQL: 2.046 saniye - Sorgu: 99 - Ortalama: 0.02067 saniye