10.04.2015 11:48    

ibrahimdeniz
Arkadaşlar selamlar.. Prohibit hocamdan zamanında istediğim bir lisp var.. Lisp; polyline ile kesişen diğer objelerin kesişim noktalarında polyline vertex atması ile ilgili..Bu lisple ilgili şöyle bir sorun yaşıyorum: Lisp düzgün çalışmasına çalışıyor ama vertex atılması istenen polyline a işlem yapıldığında eğer kapalı bir layer varsa lisp kapalı layerda olsa da kesişen bir obje varsa işleme alıyor.. Ufak bir düzenlemeyle kapalı layerı göz ardı etme işlemi eklenebilir mi ? Lisp in orjinal hali aşağıda ki gibidir.. İlgilenen arkadaşlara şimdiden teşekkür ederim..
Kod:

;|===========================================================================|
| AdVx: Seçilen Polyline nesnesinin diğer çizim nesneleriyle kesiştiği      |
|       noktalarında yeni Vertex'ler oluşturulur. işleme alınan Polyline    |
|       nesnesi içinde Arc türü segmentler olduğunda hatalı sonuç verir.    |
|       Hazırlayan: M. Şahin Güvercin  www.cizimokulu.com 08.05.2014        |
|===========================================================================|;
(defun C:AdVx  (/ BsLMsf intPoints KesNes m n NewVrtX olderr PLPoints VrtX)
  (defun myerr (errmsg)
    (if (/= errmsg "\nFunction cancelled") (prompt (strcat "\n" errmsg)))
    (command "._undo" "_e") (command "._U") (setq *error* olderr) (princ))
  (setvar "cmdecho" 0) (command "undo" "group") (vl-load-com)
  (setq olderr *error* *error* myerr) (*push-error-using-command*)
  (princ "\nİşleme alınacak Polyline nesnesini seçiniz: ")
  (while (not (setq PLineObj (ssget "+.:s" (list (cons 0 "LwPolyLine"))))))
  (setq KesNes   (ssdel (ssname PLineObj 0)
                        (ssget "x" (list (cons 0 "*Line,Arc,Circle,Ellipse"))))
        PLineObj (vlax-ename->vla-object (ssname PLineObj 0))
        PLPoints (vlax-safearray->list (vlax-variant-value
                (vlax-get-property PLineObj 'Coordinates))) m -1 n -2 VrtX nil)
  (while (< (setq n (+ n 2)) (length PLPoints))
    (if VrtX (setq VrtX (append VrtX
                         (list (list (nth n PLPoints) (nth (1+ n) PLPoints)))))
      (setq VrtX (list (list (nth n PLPoints) (nth (1+ n) PLPoints))))))
  (while (< (setq m (1+ m)) (sslength KesNes))
    (if (not (minusp (vlax-safearray-get-u-bound
                       (setq intPoints (vlax-variant-value (vla-intersectwith
           (vlax-ename->vla-object (ssname KesNes m)) PLineObj 0))) 1)))
      (progn (setq intPoints (vlax-safearray->list intPoints) n -3)
        (while (< (setq n (+ n 3)) (length intPoints))
          (setq VrtX (append VrtX
                   (list (list (nth n intPoints) (nth (1+ n) intPoints)))))))))
  (setq n -1) (while (< (setq n (1+ n)) (length VrtX))
    (setq VrtX (append (list (nth n VrtX)) (vl-remove (nth n VrtX) VrtX))))
  (setq BsLMsf (mapcar'(lambda (e)(vlax-curve-getDistAtPoint PLineObj e)) VrtX)
        VrtX   (mapcar'(lambda (e)(nth e VrtX))(vl-sort-i BsLMsf '<)))
  (setq n -1 NewVrtX nil) (while (< (setq n (1+ n)) (length VrtX))
    (if NewVrtX (setq NewVrtX (append NewVrtX (list (car (nth n VrtX)))
                                      (list (cadr (nth n VrtX)))))
      (setq NewVrtX (append (list (car (nth n VrtX)))
                            (list (cadr (nth n VrtX)))))))
  (setq VrtX (vlax-make-safearray vlax-vbDouble (cons 0 (1- (length NewVrtX))))
        n -1) (while (< (setq n (1+ n)) (length NewVrtX))
    (vlax-safearray-put-element VrtX n (nth n NewVrtX)))
  (setq VrtX     (vlax-make-variant VrtX)
        PLineObj (entget (vlax-vla-object->ename PLineObj))
        PLineObJ (subst (cons 90 (/ (length NewVrtX) 2))
                       (assoc 90 PLineObj) PLineObj) PLineObj (entmod PLineObj)
        PLineObj (vlax-ename->vla-object (entupd (cdr (assoc -1 PLineObj)))))
  (vlax-put-property PLineObj 'Coordinates VrtX)
  (command "_.undo" "end") (setq *error* olderr) (*pop-error-mode*) (prin1))

ProhibiT (17.04.2015 06:11 GMT)

10.04.2015 12:37    

ehya
(while (not (setq PLineObj (ssget "+.:s" (list (cons 0 "LwPolyLine"))))))

satırını

(while (not (setq PLineObj (ssget "+.:s:l" (list (cons 0 "LwPolyLine"))))))

olarak değiştirin.

10.04.2015 12:59    

ibrahimdeniz
Ehya Hocam değiştirdim ama işe yaramadı..

10.04.2015 13:17    

özkan-wien
ikiside olmuyor (layer kilitli oldugu halde)

10.04.2015 13:32    

ibrahimdeniz
(while (not (setq PLineObj (ssget "+.:s:l" (list (cons 0 "LwPolyLine"))))))

bu satır layer kapalı yada freeze edilmiş veya kilitlenmiş dahi olsa işe yaramadı hepsini denedim

(ssget "I" (list (cons 0 "*Line,Arc,Circle,Ellipse")))) bad argument hatası verdi

10.04.2015 13:36    

ehya
olmadı diye birşey yok.
ilk yazdığım mesajda değiştirilen kod'dan sonra ana nesne seçiminde kilitli nesne var ise işleme tabi tutmaz.
doğru bir değişiklik yapmamışsınız.

10.04.2015 13:37    

Travaci
Isolate olsa gerek :wink

10.04.2015 13:38    

özkan-wien
bende de olmadi ehya
normal bi ssget :L yazinca tutmuyo ama bu lispin icinde bu kombinasyon calismiyo +.:s:l

10.04.2015 13:42    

ehya
:dozingoff:dozingoff:dozingoff

bana torpil geçiyor o zaman..
bende çalışıyor...

10.04.2015 13:43    

özkan-wien
dosya olarak yüklesene lispi

10.04.2015 13:45    

ehya

10.04.2015 13:46    

ibrahimdeniz
Hocam tekrar tekrar yükledim lispi hatta autocad i kapatıp tekrar açtım tekrar yükledim lispi ama olmadı her defasında kapalı freeze yada kilitli layerda olan çizgiler işleme aldı

10.04.2015 13:48    

özkan-wien
yine ayni nokta atiyo kesisim yerlerine. ilginc

10.04.2015 13:50    

özkan-wien
arkadasim lazim olmayan layerlari kilitle cizimini 2222 saga cek orda islemini yap geri getir.bu seferlik böyle idare et. olsa dükkan senin olmuyo.

10.04.2015 13:51    

özkan-wien
ben de ay niautocadi kapattim pcyi kapatim actim nerdeyse eve gidip geri gelecegim olmuyo

10.04.2015 13:59    

ibrahimdeniz
Layer isolate i de denedim olmadı ..

10.04.2015 13:59    

ibrahimdeniz
Yine de ilginiz için teşekkür ederim..

10.04.2015 14:09    

ehya
yukarıdaki linkten tekrar dosyayı indirebilirsiniz.

10.04.2015 14:18    

ibrahimdeniz
Automation Error. Not applicable uyarısı veriyor hocam

10.04.2015 14:21    

ehya
Tekrar test ettim. Herhangi bir sorun yok.

Autocad'in hangi sürümünü kullanıyorsunuz?

Copyright © 2004-2022 SQL: 1.844 saniye - Sorgu: 103 - Ortalama: 0.0179 saniye