AutoCAD • AutoLISP • Programlama • Püfler • Komutlar • Terimler • Eğitim
aLd • TCad • FacadeCAD • Cephe Kot • HQ Library • FreeMUST • Pasdoc.A
09.08.2022 15:13    

slaylo25
Merhabalar herkese,

Uzun zamandır siteyi sessizce takip ediyorum ilk girdim olacak inşallah. Buradaki lisp paylaşan herkese tüm samimiyetimle teşekkür ederim. (Öncekiler için teşekkür edememiştim gizli gizli kullandım hepsini :) )

Soruma gelecek olursam (Yanlış anlamayın sizler kadar bilmediğim için yapılabilirliği ya da zorluğu hakkında tam bilgim yok isterken yüzsüzlük yapmak kesinlikle istemem.)

Autocadde topluca seçtiğim line,polylineların (çoğunlukla polyline) ortasına çizgiyle aynı layerda artan şekilde numara yazıp uzunluğu,numarası ve layerıyla excele aktaracak bir lisp. (Aktarırsa iyi olur ama aktaramasada olur dataextraction ile halledebilirim.)

Neredeyse tüm sayfalara baktım ancak bulabildiğim en yakın örnek sayın Travaci' nin yazdığı aşağıdaki lisp.

Bu lisp layerları ayarlamıyor(Uzun sürse de "ma" yapıyorum, o çok problem değil.).
Çizgi uzunluğunu da autocadde poz numarasının yanına yazıyor(Bu da çok problem değil.).
Ama en önemlisi olan polylinelarda çalışmıyor. (Bu çok büyük problem çünkü %99 polyline kullanmak zorundayım.)

Belki polylineların orta noktası yoktur diye yapılmıyordur, belki Erkan Bey'in yazmak istediği lispte ihtiyaç yoktu bilemiyorum. Araştırmalarımda sadece linelarda çalışan lisplere polyline-arc eklendiğini gördüğümden soruyorum. En azından yapabilecek bir arkadaştan aşağıdaki kodu polylinelarda çalışacak şekilde düzenlemesini rica etsem.

Kod:

;; ============================================== ;;
;; Cizgi Ustune Ve Dwg Yanina Exel Dosyasi Acarak ;;
;;        Poz Ve Uzunluk Bilgilerini Yazar        ;;
;;            Created By Erkan Travaci            ;;
;; ============================================== ;;

(defun c:trv (/ sy sg dt) (vl-load-com)
  (if (= (getvar 'useri5) 0) (setvar 'useri5 1))
  (setq sy (getreal (strcat "\nFirst no <" (rtos (getvar 'useri5) 2 0) "> :")))
  (if (not sy) (setq sy (getvar "useri5")) (setvar 'useri5 sy))
  (if (setq x -1 sg (ssget (list (cons 0 "line"))))
    (progn
      (setq dt (open (strcat (getvar 'dwgprefix)
        (vl-filename-base (getvar 'dwgname)) ".xls") "a"))
      (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
      (repeat (sslength sg)
        (setq ob (vlax-ename->vla-object (ssname sg (setq x (1+ x))))
              ac (vla-get-Angle ob))
        (if (and (<= ac 4.71239) (> ac 1.5708)) (setq ac (+ 3.14159 ac)))
        (setq mp (polar (vlax-curve-getpointatdist ob (/
          (setq di (vla-get-Length ob)) 2)) (- ac (/ pi 2)) (getvar 'textsize)))
        (entmake (list (cons 0 "text") (cons 8 "Poz")
          (cons 1 (strcat (rtos (getvar 'useri5) 2 0) "-" (rtos di 2 0)))
          (cons 10 mp) (cons 40 (getvar 'textsize)) (cons 41 0.85)
          (cons 11 mp) (cons 50 ac) (cons 72 1) (cons 73 2)))
        (write-line (strcat (rtos sy 2 0) "\t" (rtos di 2 0)) dt)
        (setq sy (setvar 'useri5 (1+ sy)))
      )
      (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
      (close dt)
    )
  ) (princ)
)

> 1 <
Copyright © 2004-2022 SQL: 1.314 saniye - Sorgu: 44 - Ortalama: 0.02986 saniye