Copyright © 2004-2022 SQL: 1.189 saniye - Sorgu: 86 - Ortalama: 0.01382 saniye
25.01.2011 08:22
rub0938 |
Sevğili arkadaşlar ben basit bir lisp arıyorum Secilen textlerin başına veya sonuna harf veya rakam eklemesi yapabilen bir lisp mesela 1,2,3 rakamlarını mouse ile seçtikten sonra S1,S2,S3 yapabilecek bir lisp yapılabilirmi cevaplarınızı bekliyorum yardımlarınız için şimdiden teşekkür ederim
|
25.01.2011 10:00
halilozcakir |
|
25.01.2011 11:25
ProhibiT |
Bu fonksiyonu ben unutmuştum, Başa Sona Ekle kelimelerinden BSE adlı fonksiyon.
Teşekkürler halilozcakır, nostalji oldu benim için :)
|
25.01.2011 11:28
rub0938 |
sayın halil özçakır bey yardımınız için çok teşekkür ederim
|
12.03.2011 11:25
hgkyrl |
Merhaba
eklediğiniz link açılmıyor hata veriyor detay alabilirmiyim bse fonkdiyonu nasıl işler ? teşekkürler
|
16.03.2011 15:30
halilozcakir |
Sitede biryerlededir üstadlar düzeltir yakında ..
|
16.03.2011 18:20
ProhibiT |
Merhaba halilozcakir :) verdiğin linki ve fonksiyonu ben de bulamadım.
Kod: (defun c:AA () (setq yz (ssget (list (cons 0 "*text"))) L (sslength yz) n -1) (while (< (setq n (1+ n)) L) (setq pvt (entget (ssname yz n)) pvt (subst (cons 1 (strcat "S" (cdr (assoc 1 pvt)))) (assoc 1 pvt) pvt)) (entmod pvt) (entupd (cdr (assoc -1 pvt)))) ) Şeklinde basit bir fonksiyon verip geçilebilirdi. Sorulan soruyu karşılar, ama sorumluluk duygumuz buna izin vermez :) Kod: ;;;======================================================================= ;;; Komut adı: OSe ;;; Seçilen Text ve Mtext objelerine, Önek veya Sonek Ekler veya Çıkarır. ;;; Hazırlayan, M. Şahin Güvercin - 16-03-2011 19:45 ;;;======================================================================= (defun c:OSe (/ Oe Se iS yzL L L0 L1 L2 pvt yaz) (setvar "cmdecho" 0) (command "undo" "group") (setvar "modemacro" "Prepared by; M. S. Guvercin") (setq Oe (getstring "\n Önek : ") Se (getstring "\n Sonek : ")) (if (or (/= Oe "") (/= Se "")) (progn (if (= oiS nil) (setq oiS "Ekle")) (initget "Ekle / Cikar") (if (not (setq iS (getkword (strcat "\n Ekle/Çikar (E/C) <" oiS ">: ")))) (setq iS oiS) (setq oiS iS)) (princ "\n Önek/Sonek işlemi yapılacak Text'leri seçiniz...") (setq yzL (ssget (list (cons 0 "*Text"))) L (sslength yzL) n -1 L1 (strlen Oe) L2 (strlen Se)) (while (< (setq n (1+ n)) L) (setq pvt (entget (ssname yzL n)) yaz (cdr (assoc 1 pvt)) L0 (strlen yaz)) (cond ((= iS "Ekle") (progn (if (and (/= Oe "") (/= Oe (substr yaz 1 L1))) (setq yaz (strcat Oe yaz) L0 (strlen yaz))) (if (and (/= Se "") (/= Se (substr yaz (- (1+ L0) L2) L2))) (setq yaz (strcat yaz Se) L0 (strlen yaz))))) ((= iS "Cikar") (progn (if (and (/= Oe "") (= Oe (substr yaz 1 L1))) (setq yaz (substr yaz (1+ L1) (- L0 L1)) L0 (strlen yaz))) (if (and (/= Se "") (= Se (substr yaz (- (1+ L0) L2) L2))) (setq yaz (substr yaz 1 (- L0 L2)) L0 (strlen yaz)))))) (setq pvt (subst (cons 1 yaz) (assoc 1 pvt) pvt)) (entmod pvt) (entupd (cdr (assoc -1 pvt)))))) (command "undo" "e") (setvar "modemacro" "") (prin1) ) (princ "\n Hazırlayan, M. Sahin Guvercin - www.autocadokulu.com") Şeklinde genel amaçlı bir fonksyion yazdım. Seçilen Text veya Mtext gurubuna Önek veya Sonek (biri ya da her ikisi) ekler veya çıkarır. Ekleme ya da çıkarma yaparken; - Seçilen obje gurubunda Text ya da Mtext olmayan objeler işleme alınmaz. Yani özgürce seçim yapabilirsiniz. - Önek ya da Sonek eklenirken, seçim gurubu içinde verilen Önek veya Sonek zaten varsa bunlar tekrar işleme alınmaz. - Önek ya da Sonek çıkarılırken, söz konusu ekleri içermeyen objeler işleme alınmazlar. Herkese kolay gelsin. Düzenleme: 11 yıl sonra fonksiyonun orijinal haline ilişmeden düzenleme yapıldı. Kod: ;|============================================================================| | Komut adı: OSe | | Seçilen Text ve Mtext objelerine, Önek veya Sonek Ekler veya Çıkarır. | | Hazırlayan, M. Şahin Güvercin - 16-03-2011 19:45 | | | | 07.04.2022 tarihli güncelleme ve düzenlemeler: | | - *error* hata yakalama fonksiyonu eklendi. | | - Hem Önek hemde Sonek değerlerinin boş olması durumunda çıkış yaplılır. | | - cond işlevi içindeki progn'ler kaldırıldı. | | - while döngüsü sayaç değerine değil, varlık-yokluk kontrolüne bağlandı. | |————————————————————————————————————————————————————————————————————————————|; (defun c:OSe (/ *error* Oe Se iS yzL L0 L1 L2 PvT yaz) (defun *error* (er /) (if (member er '("Function cancelled" "quit / exit abort")) (princ (strcat "\n*Error* " er)) (princ "\n Hem Önek hemde Sonek boş olamaz!")) (if (= (logand (getvar "undoctl") 8) 8) (command-s "_.undo" "e")) (if ocmd (setvar "cmdecho" ocmd)) (setvar "modemacro" "") (prin1)) (setq ocmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "undo" "group") (setq Oe (getstring T "\n Önek : ") Se (getstring T "\n Sonek : ")) (if (and (= Oe "") (= Se "")) (*error*)) (if (not oiS) (setq oiS "Ekle")) (initget "Ekle Çıkar") (setq iS (getkword (strcat "\n Ekle/Çıkar (E/Ç) <" (if oiS oiS "") ">: "))) (if (not iS) (setq iS oiS) (setq oiS iS)) (princ "\n Önek/Sonek işlemi yapılacak Text'leri seçiniz...") (setq yzL (ssget (list (cons 0 "*Text"))) L1 (strlen Oe) L2 (strlen Se) n -1) (while (setq PvT (ssname yzL (setq n (1+ n)))) (setq PvT (entget PvT) yaz (cdr (assoc 1 PvT)) L0 (strlen yaz)) (cond ((= iS "Ekle") (if (and (/= Oe "") (/= Oe (substr yaz 1 L1))) (setq yaz (strcat Oe yaz) L0 (strlen yaz))) (if (and (/= Se "") (/= Se (substr yaz (- (1+ L0) L2) L2))) (setq yaz (strcat yaz Se) L0 (strlen yaz)))) ((= iS "Çıkar") (if (and (/= Oe "") (= Oe (substr yaz 1 L1))) (setq yaz (substr yaz (1+ L1) (- L0 L1)) L0 (strlen yaz))) (if (and (/= Se "") (= Se (substr yaz (- (1+ L0) L2) L2))) (setq yaz (substr yaz 1 (- L0 L2)) L0 (strlen yaz))))) (setq PvT (entmod (subst (cons 1 yaz) (assoc 1 PvT) PvT)) PvT (entupd (cdr (assoc -1 PvT))))) (if (= (logand (getvar "undoctl") 8) 8) (command-s "_.undo" "e")) (if ocmd (setvar "cmdecho" ocmd)) (prin1)) İhtiyaç duyup kullanacakların bu son halini kullanmalarını tavsiye ederim. ProhibiT (07.04.2022 10:03 GMT) |
17.03.2011 11:56
hgkyrl |
Elinize sağlık üstad
çok harika denerken bile çok keyf aldım siz bu lisp kodlarını oluştururken kimbilir ne kadar keyf alıyorsunuzdur. sonucunu görünce özellikle...
|
17.03.2011 12:21
ProhibiT |
Yazarken o kadar da keyifli olmuyor doğrusu :) yazmaya başlamadan önce, bazen bir kaç gün, bazen de daha uzun süren, bazen de hiç bitmeyen o zihinde şekillendirme aşaması çok keyifli bence. düşüncede çözülmüş, bitmiş bir şeyi kodlaması o kadar heyecan verici değil. burada paylaşılması ise; sancılı bir süreçte sabaha karşı şiirini bitirip, son halini ilk karşılaştığı kişiye "günaydın" demeden, onun yerine şiirini okuyan şairin, dinleyenin yüzüne yansıyan güzellik karşısında hissettikleri böyle bir şeydir sanıyorum. ve elbette en keyiflisi de, birilerinin o şiiri anlaması (aşağıdaki imzamda da bunu yazdım zaten) asıl güzel olan işte bu. burada autocadokulu ortamındaki tüm komşularımızın aynı keyifleri yaşamalarını diliyorum :)
|
19.03.2011 14:14
sinancakal37 |
Süper ya teşekkürler çok işime yarayacak
|
02.12.2011 21:12
KÖPRÜ-YOL |
Şahin hocanın bu lispini deneme şansı buldum..Sonunda zaten "0" sıfır var ise ayrıca eklemiyor..Örneğin seçilen seride 15 ve 50 rakamları olsun.Seçip "0" sıfır" ekle denince.. 15, 150 olurken 50 olduğu gibi kalıyor....Birde ne hikmetse bu lispi undo ile geri alamiyorsunuz..Bu da ayrı bir mesele..Bilgi amaçlı yazdım..Yine de teşekkür ederim..Güzel denemeydi..
|
03.12.2011 07:57
ProhibiT |
Algoritmayı kurarken, ekleme durumunda, önek veya sonek text içinde zaten mevcut ise tekrar eklenmemesi şeklinde bir kontrol mantığı kuruldu. 50'ye sonek olarak 0 eklemeye çalışılınca, zaten sonu 0 olduğu için ekleme yapmaz. fonksiyon işleyiş mantığı bilerek böyle kuruldu. nümerik işlem yapmak zaten hedeflenmiyor. fonksiyon normal yolla sonlanırsa undo yapılmaması için hiç bir sebep yok...
ProhibiT (03.12.2011 20:04 GMT) |
selcukkpr |
Lispi kullandım ve çok işime yaradı. 1400 e yakın sayının başına B. yazmam gerekiyordu. Tek seferde yazdım. Konu üzerinden 8 yıl geçmiş tekrar hortlatmak istemezdim ama TEŞEKKÜR etmeden de geçemeyeceğim. Çok sağolun Şahin bey.
|