;***********************************************************************; ; TAL_UTILS.LSP ; ;***********************************************************************; ; Faydalı programcıklar ; ; (c) Copyrigt 2006 Taliasoft.com ; ; Eğitim amaçlı olarak ücretsiz dağıtılmaktadır ; ; Orhan Toker tarafından tasarlanmıştır ; ;***********************************************************************; ;;; --------------------------------------------------------------------- ;;; GLOBAL VARIABLES ;;; --------------------------------------------------------------------- ; layer name for hidden objects (setq tal_hidden_layer "TAL_HIDDEN") ; application name for xdata (setq tal_layer_app "TAL_HIDLAY") ;;; --------------------------------------------------------------------- ;;; UTILITY FUNCTIONS USED BY NORMAL FUNCTIONS ;;; --------------------------------------------------------------------- ; UF001 ; Hata ayıklama fonksiyonu (defun tal_err(*e) (if (/= *e "tal") (princ (strcat "\nHATA:" *e)) ) (setq *e nil) (put_sys_vars) (setq *error* olderr) (princ) ) ; UF002 ; Sistem değişkenlerini sakla (defun get_sys_vars() (setq oldcmd (getvar "CMDECHO") oldos (getvar "OSMODE") ) (princ) ) ; UF003 ; Sistem değişkenlerini geri koy (defun put_sys_vars() (setvar "OSMODE" oldos) (setvar "CMDECHO" oldcmd) (princ) ) ; UF004 ; Sistem değişkenlerini ayarla (defun set_sys_vars() (setvar "CMDECHO" 0) (princ) ) ; UF005 ; Verilen ileti ile nesne seçilmesini sağlar ; ----------------------------------------------------- ; GLOBALS ; _objtype : STRING, object's DXF name ; "LINE", "ARC", "INSERT" ; _objpick : POINT, object's picked point (defun get_obj (ileti / olderr o1 e1 ent1) ;(setq olderr *error* *error* tal_err) (setq o1 (entsel ileti) e1 (car o1) ent1 (entget e1) _objtype (cdr (assoc 0 ent1)) _objpick (cadr o1) _entlst ent1 _ename e1 ) ) ; UF006 ; Yazı yazar ; ----------------------------------------------------- (defun tal_yaz ( ins yazi yuk aci / vl ) (setq vl (list (cons 0 "TEXT") ; Varlığın adı (cons 100 "AcDbEntity") (cons 100 "AcDbText") (cons 8 "TAL_123ENUM") ; layerin adı (cons 10 ins) ; yerleşim noktası (cons 11 ins) (cons 40 yuk) ; yüksekliği (cons 50 aci) ; açısı (cons 1 yazi) ; text (cons 7 "Standard") ; yazı stili (cons 72 4) ; middle justificate )) ; listeyi sonlandır ; Ekleyelim (princ "\n") (princ vl) (entmake vl) ; varlığı yarat ) ; UF006 ; Initialization function for layer utilites ; ----------------------------------------------- ; October.2006 ; by Erhan TOKER (defun tal_layer_init ( / ) ; Eğer yoksa gizli katmanı yaratalım ; Gizli katman ismi ; *tal_hidden_layer* ; değişkeninde (if (not (tblsearch "LAYER" tal_hidden_layer)) (command "_LAYER" "_NEW" tal_hidden_layer "_F" tal_hidden_layer "_C" "252" tal_hidden_layer "" ) ) ; XDATA için uygulama ismini kaydet ; uygulama ismi ; *tal_layer_app* ; değişkeninde. (if (not (tblsearch "appid" tal_layer_app)) (regapp tal_layer_app) ) (princ) ) ; < ----------------------------------- TTT -----------------------------> ; Teğet Teğet Teğet daire çizimi. ; Gösterdiğiniz üç nesneye teğet daireyi çizer. ; ; (c) 1994-2006 Talia Ltd. ; Orhan TOKER ; ------------------------------------------------------------------------ ; FN001 ; TAN TAN TAN daire çizici (defun c:ttt(/ olderr) (get_sys_vars) (set_sys_vars) (setq olderr *error* *error* tal_err) (setvar "OSMODE" 256) ; Sadece teğetleri yakala (princ "\nBirinci teğeti gösterin:") (command "_circle" "_3p" pause) (princ "\nİkinci teğet:") (command pause) (princ "\nÜçüncü teğet:") (command pause) (put_sys_vars) (setq *error* olderr) (princ) ) ; <----------------------- PRF ---------------------------> ; Pick Radius & Fillet ; Bu komut önce bir daire ya da yay seçmenizi ister. ; Sonra seçilen yayın yarıçapı ile fillet komutuna girer. ; ; (c) 1994-2006 Talia Ltd. ; Erhan TOKER ; -------------------------------------------------------- ; FN002 ; PRF, Pick Radius and Fillet ; June.2006 (defun C:PRF( / e1 ent1 dxf01 ctrl rad) ; önce bazı sistem değişkenlerini saklayalım (get_sys_vars) ; şimdi sistem değişkenlerini kendi ayarlarımıza getirelim (set_sys_vars) ; AutoLISP'in hata fonksiyonunu bizim hata ; fonksiyonumuza yönlendirelim (setq olderr *error* ; orijinali saklayalım *error* tal_err ; kendi hata fonksiyonumuz ) ; Daire ya da yay seçelim ; kontrol değişkenini nil yapalım ; daire ya da yay seçilinceye kadar nil kalacak. (setq ctrl nil) (while (null ctrl) (setq e1 (entsel "\nFILLET komutu için bir YAY ya da DAIRE seçin:")) ; DXF listesi (setq ent1 (entget (car e1))) ; Nesne tipi (setq dxf01 (cdr (assoc 0 ent1))) (if (or (= dxf01 "CIRCLE") (= dxf01 "ARC")) ; seçim doğru ctrl=T (setq ctrl T) ; seçim yanlış (princ "\nYanlış seçim yaptınız!") ) ) ; seçim tamam fillet komutuna girip işi bitirelim ; yarı çapı al (setq rad (cdr (assoc 40 ent1))) ; fillet (command "_.FILLET" "_R" rad) (command "_.FILLET") ; değişkenleri eski haline döndür (put_sys_vars) (setq *error* olderr) (princ) ) ; <----------------------- PJ ---------------------------> ; PEDIT + Join ; Nesneleri polyline na çevirir ; ; ; (c) 1994-2006 Talia Ltd. ; Orhan TOKER ; -------------------------------------------------------- ; FN003 ; PJ, PEDIT JOIN ; Tem.2006 (defun c:pj(/ olderr) (setq olderr *error* *error* tal_err) (setq _objtype nil) ; get_obj kullanıcı tanımlı fonksiyonunu çağırarak ; varlığı seçtirip inceleyelim (get_obj "\nBirleştirmek istediğiniz varlığı gösterin:") ; eğer nesne tipi POLYLINE parçası olamayacaksa çıkalım (if (and _objtype (/= _objtype "LINE") (/= _objtype "ARC") (/= _objtype "POLYLINE") ) (alert "\nSeçtiğiniz varlık POLYLINE yapılamaz!") ; Seçilen nesne polyline olabilecekse ; ekleyeceğimiz parçaları seçtirelim (if (or (= _objtype "LINE") (= _objtype "ARC")) (progn (princ "\nEkleyeceğiniz varlıkları seçin:") (command "_select" "_auto" pause) (command "_pedit" _objpick "_y" "_j" "_p" "" "") ) (progn (princ "\nEkleyeceğiniz varlıkları seçin:") (command "_select" "_auto" pause) (command "_pedit" _objpick "_j" "_p" "" "") ) ) ) (setq *error* olderr) (princ) ) ; <----------------------- EKS ---------------------------> ; Copy And Mirror with 45 degrees ; Bu komut ile seçtiğiniz bir çizgi tam ortasından MIRROR ; edilerek +90 derecede bir kopyası daha çizdirilir ; | | ; | --+-- ; | | ; ; (c) 1994-2006 Talia Ltd. ; Erhan TOKER ; -------------------------------------------------------- ; FN004 ; EKS, Eksen ; July.2006 (defun c:EKS(/ olderr p10 p11 mpt x1 y1 z1 d1 a1 p2) (get_sys_vars) (set_sys_vars) (setq olderr *error* *error* tal_err) (setq _objtype nil) ; Şimdi (get_obj) fonksiyonundan yararlanarak bir çizgi seçelim (setq _objtype "_") ; Doğru nesne ( LINE ) seçilen kadar deneme yapalım (while (/= _objtype "LINE") (get_obj "\nEksen çizmek için bir çizgi gösterin:") ) ; çizginin başlangıç ve bitiş noktaları (setq p10 (cdr (assoc 10 _entlst)) p11 (cdr (assoc 11 _entlst)) ) ; çizginin orta noktası (setq x1 (/ (+ (car p10) (car p11)) 2.0) y1 (/ (+ (cadr p10) (cadr p11)) 2.0) z1 (/ (+ (caddr p10) (caddr p11)) 2.0) mpt (list x1 y1 z1) ) ; çizginin uzunluğu (setq d1 (distance p10 p11)) ; çizginin açısı ( RADIANS ) (setq a1 (angle p10 p11)) ; eksen çizgisinin ikinci noktası (setq p2 (polar mpt (+ a1 (/ pi 4.0)) d1)) ; MIRROR KOMUTU (command "_MIRROR" _ename "" mpt p2 "N") (put_sys_vars) (setq *error* olderr) (princ) ) ; <----------------------- 123 ---------------------------> ; TAL_123enum.LSP ; Belli bir aralık ve açıyla sayışar yazar ; (c) 1994-2006 Talia Ltd. ; Designed by Orhan TOKER ; -------------------------------------------------------- ;; FN05 123 ;; Belli açı ve aralıkla numara sıralandırır... (defun c:123(/ olderr p1 p2 ara aci yuk ins yazi yaziacisi) (setq olderr *error* *error* tal_err) ; yazı başlangıç noktasını al (setq p1 (getpoint "\nYazının başlangıç noktası:")) ; Yazının aralığını ve açısını al (setq p2 (getpoint p1 "\nAralığı ve açıyı girin:") ara (distance p1 p2) aci (angle p1 p2) yaziacisi (getangle p1 "\nYazı açısını girin:") ) ; Yazının yüksekliğini al (setq yuk (getdist p1 "\nYazı yüksekliğini girin:")) ; Başlangıç ve bitiş rakamlarını al ve adet hesapla (setq basla (getint "\nBaşlangıç sayısı:") bitis (getint "\nBitiş sayısı:") adet (- bitis basla) ) ; döngüye gir (while (> adet -1) ; yazının yerleşim noktasını belirle (setq ins (polar p1 aci (* adet ara))) ; yazıyı belirle (setq yazi (rtos (+ basla adet))) ; adeti bir azalt (setq adet (1- adet)) ; yazdır fonksiyonunu çağır (tal_yaz ins yazi yuk yaziacisi) ) ; döngüyü bitir (setq *error* olderr) (princ) ) ; <---------------------- -HO ---------------------------> ; Bu komut seçtiğiniz nesneleri kapatı ; (c) 1994-2006 Talia Ltd. ; Erhan TOKER ; -------------------------------------------------------- ;;; FN006 ;;; October.2006 (defun c:-HO ( / ss len c en xd ln el) (setq olderr *error* *error* tal_err) ; Gizlenecek nesneleri seçelim (setq ss (ssget) ; selection set len (sslength ss) ; Seçim setindeki nesne sayısı c 0 ; Sayacı sıfırla ) ; Seçim setindeki tüm nesneleri gizlenmiş katmana al (while (< c len) (progn ; Nesne özellikleri (setq ; nesne ismi en (ssname ss c) ; nesnenin orijinal katman ismi ln (cdr (assoc 8 (entget en))); ; katman isminin saklanacağı uzatılmış öğre verisi xd (list (list -3 (list tal_layer_app (cons 1003 ln)))) ) ; Nesnenin katmanını değiştir. (setq el (entget en) el (subst (cons 8 tal_hidden_layer) (cons 8 ln) el) ) ; Nesnenin öğe verisini ekle (setq el (append el xd)) (entmod el) ) ; sayacı artır (setq c (1+ c)) ) ; Seçim setini serbest bırak. (setq ss nil) (setq *error* olderr) ; Komuttan etkilenen nesne sayısını yazdır (setq s (strcat (itoa len) " Objects hidden with -HO command.") ) (princ s) (princ) ) ; <----------------------- -SO --------------------------> ; Bu komut gizlenmiş nesneleri açar ; (c) 1994-2006 Talia Ltd. ; Erhan TOKER ; -------------------------------------------------------- ;;; FN007 ;;; October.2006 (defun c:-SO( / ss en el len c fil ln s) ; Tüm gizlenmiş nesneleri bulalım (setq ss (ssget "_X" (list (list -3 (list tal_layer_app)))) ) ; Hepsini orijinal katmanına geri çevirelim. (setq c 0 len (sslength ss) ) (while (< c len) (progn ; ename (setq en (ssname ss c) ; entity name ; Uzatılmış öğe verisinden orijinal ; katman ismini alalım. el (entget en (list tal_layer_app)) ln (cdr (assoc 1003 (cdadr (assoc -3 el)))) ; Yeni nesne listesi el (subst (cons 8 ln) (cons 8 tal_hidden_layer) el) ) ; modify (entmod el) ) (setq c (1+ c)) ) (command "_LAYER" "_F" tal_hidden_layer "") (setq ss nil) (setq s (strcat (itoa len) " Objects are now visible.")) (princ s) (princ) ) ; <----------------------- SLOPE --------------------------> ; İki nokta arasındaki eğimi bulur ; (c) 1994-2007 Talia Ltd. ; Erhan TOKER ; -------------------------------------------------------- ;;; FN008 ;;; January.2007 (defun C:SLOPE ( / ) (get_sys_vars) (setq olderr *error* *error* tal_err) ;; Get two points or an entity (initget 1 "Line") (setq p1 (getpoint "\nFirst point or select Line: ")) (if (= p1 nil) (exit)) (if (= p1 "Line") ; true (progn (setq _objtpye ".") (while (/= _objtype "LINE") (get_obj "\nSelect a line:") ) (setq p1 (cdr (assoc 10 _entlst))) (setq p2 (cdr (assoc 11 _entlst))) ) ; false (progn (setq p2 (getpoint p1 "\nSelect second point: ")) ) ) (setq *error* olderr) (princ) ) ;;; ======================================================================== ;;; dosya yüklemesi tamam ; init layer (tal_layer_init) (princ "\nTalia LISP gereçleri yüklendi.") (princ "\n(c)1994-2006 Talia Ltd.") (princ)