Warning: include(plugins/extended/similar/similar.php): failed to open stream: No such file or directory in /home/cizimoku/m.cizimokulu.com/system/core/page/page.inc.php on line 257

Warning: include(plugins/extended/similar/similar.php): failed to open stream: No such file or directory in /home/cizimoku/m.cizimokulu.com/system/core/page/page.inc.php on line 257

Warning: include(): Failed opening 'plugins/extended/similar/similar.php' for inclusion (include_path='.:/opt/alt/php74/usr/share/pear') in /home/cizimoku/m.cizimokulu.com/system/core/page/page.inc.php on line 257
Yazı içindeki sayıları toplayan lisp
Yazı içindeki sayı değerlerini toplar
ProhibiT - 08.04.2020 14:03
Toplamak üzere seçeceğiniz text veya mtext türü objelerin içinde nümerik olmayan karakterler olabilir, hatta tamamı alfanümerik bile olabilir. Toplam yazdırılırken, toplanan objelerde kullanılan para birimi ve diğer birimler gözardı edilir yazılmazlar.



- Toplanmak üzere seçilen text objelerinin içinde virgül varsa nokta olarak alınır.
- Söz konusu text objelerinin içinde nümerik olmayan karakterler varsa, gözardı edilir.
- Sonuçlar yazdırılmak üzere seçim yapmanız istendiğinde tıkladığınız noktada bir text ya da mtext varsa onun içeriği değiştirilerek toplam değer yazılır. eğer tıklanan noktada text veya mtext türü bir obje yoksa, yeni bir text objesi oluşturularak toplam yazılır.



Çalıştırmak için komut: tpLm

Lisple ilgili forum linki İleti #62467

Bu lispi kodlayan ProhibiT 'e teşekkürler.

Kod:

(defun c:tpLm (/ dpp odz tpLn L n txh pvt m o rsLt tpLm)
  (command "undo" "group") (setvar "cmdecho" 0)
  (defun *error* (er)
    (setvar "dimzin" odz) (setvar "Luprec" oLp) (command "_.undo" "e"))
  (if (not oLp) (setq oLp (getvar "luprec")))
(if (setq dpp (getint (strcat "nOndalık Basamak Sayısı <" (itoa oLp) ">: ")))
    (setq oLp dpp) (setq dpp oLp)) (setq odz (getvar "dimzin"))
  (setvar "luprec" dpp) (setvar "dimzin" 0)
  (princ "n  toplanacak sayıları seçiniz")
  (setq tpLn (ssget (list (cons 0 "*text")))
        L (sslength tpLn) n -1 rsLt nil
        txh (cdr (assoc 40 (entget (ssname tpLn 0)))))
  (while (< (setq n (1+ n)) L)
    (setq pvt (cdr (assoc 1 (entget (ssname tpLn n)))) m (strlen pvt) o 0)
    (while (<= (setq o (1+ o)) m)
      (if (= (substr pvt o 1) (chr 44))
        (setq pvt (strcat (substr pvt 1 (1- o)) (chr 46)
                          (substr pvt (1+ o) (- m o)))))
      (if (or (< (ascii (substr pvt o 1)) 44) (> (ascii (substr pvt o 1)) 57))
        (setq pvt (strcat (substr pvt 1 (1- o)) (substr pvt (1+ o) (- m o)))
              m (strlen pvt) o (1- o))))
    (if rsLt (setq rsLt (+ rsLt (atof pvt))) (setq rsLt (atof pvt))))
  (princ "n    toplamı seçiniz")
  (while (/= 3 (car (setq sp (grread t 4 2)))))
  (setq sp (cadr sp) np (list (car sp) (cadr sp)) tpLm (ssget np))
  (if tpLm (progn (setq tpLm (entget (ssname tpLm 0)))
             (if (or (= (cdr (assoc 0 tpLm)) "TEXT")
                     (= (cdr (assoc 0 tpLm)) "MTEXT"))
            (progn (setq tpLm (subst (cons 1 (rtos rsLt)) (assoc 1 tpLm) tpLm))
                 (entmod tpLm) (entupd (cdr (assoc -1 tpLm))))))
    (entmake (list (cons 0 "text") (cons 10 sp) (cons 50 0) (cons 40 txh)
                   (cons 1 (rtos rsLt)))))
   (command "undo" "e") (setvar "dimzin" odz) (setvar "Luprec" oLp) (prin1)
)


Bu kodları nasıl kullanacağınızı bilmiyorsanız aşağıdaki linkten;
AutoLISP > Konu Anlatımları > Lisp Dosyalarının oluşturulması ve Yüklenmesi
konusunu inceleyiniz.

Yazar: ProhibiT
İçerik: LSP (Lisp) formatında AutoLISP dosyası
Tag: lisp, lsp, yazı, toplama, toplam, değer, sayı topla, text, sum, addition

Yorumlar :
recep_xyz   14.06.2024 11:09 #16160  

TPLM LİSP
Autolisp atof komutu nun içindeki boşluk hayat kurtarıyor.
Boşluk verisinden sonra hiç bir veriyi dikkate almıyor .
Bu durum çok iyi boşluktan sonra sayıda olsa dikkate almıyor.

recep_xyz   13.06.2024 09:52 #16159  

not düzeltme klavye tuşuna yanlış basıldı.
"m2 deki dayının sonuna ekleniyor"="m2 deki Sayının sonuna ekleniyor" olacak
sayılar
Alan: 0.25 m2 , Alan: 11 m² " m2" boşluk varsa sorun yok. (sayı boşluk metin)
Alan: 0.25m2 , Alan: 11m2 "m2" boşluk yoksa sorun var. Veriler 0.252 , 112 ye dönüşüyor.
bu durunda hata meydana geliyor.

recep_xyz   13.06.2024 08:56 #16158  

Konu: TPLM lisp i hakkında (yazı-ascii sayı toplamı)
Gönderen: recep_xyz
Tarih: 12.06.2024
ProhibiT Hocam ellerinize sağlık güzel bir çalışma olmuş.

Fakat bir öngörülemeyen sıkıntısı mevcut
Yazı Verisi "Toplam :125.35 m2" yazılarında değişken verisi 125.3520 olmakta
Yazı Verisi "Toplam :125 m2" yazılarında değişken verisi 1252 olmakta
Yazı Verisi "Toplam :125.0035 m2" yazılarında değişken verisi 125.00352 olmaktadır.
veri toplanınca GERCEKTE SONUÇ :375.3535 LİSP SONUÇ : 1502.35552
bu durumda lisp içinde m2 ve m3 leri işlem dışı nasıl biraktırırız ?
revize projelerde genellikle elle müdahelede bu durumda standart olmuyor.
m2 deki dayının sonuna ekleniyor 1ler hanesine eklenince sayı 10 kat artıyor vede
nereye eklendiği muammalı bu hata birler basamağıda olabilir.
Noktadan sonraki basamaklarda olabilir .

"m²" yerine "m2" yazılmış , "m³" yerine "m3" yazılmış bazı yazılar elle müdaheedilirken yazılmış

Bu durumda bu lisp yazıyı ayırarak gerekli kısmı işleme alınabilir mi ?
lisp yardımıyla hatanın önüne geçilebilir mi?
bu yazıları [ÖNBİLGİ]-[DEĞERİ]-[BİRİMİ] olarak geğişkenlere nasıl atayabiliriz.?????

landscaper   02.04.2021 09:50 #16072  

merhaba öncelikelr çok teşekkür ederim bu lisp için.... yaklaşık 1 yıldır autocad 2019 ve 2020 de kullandığım lisp şuan autocad 2020 de çalışmamaya başladı. Şöyle bir hata veriyor...

; warning: unwind skipped on exception
; error: Exception occurred: 0xC0000005 (Access Violation)

Sorun ne olabilir acaba? Prohibit hocam yardımcı olurmusunuz?

Copyright © 2004-2022 SQL: 0.046 saniye - Sorgu: 33 - Ortalama: 0.0014 saniye