28.09.2015 07:20    

alumina
Alıntı
BLack|E :



Mehmet Sahin GUVERCIN hocamizin kitabi okuma kitabi degil calisma kitabidir, lutfen romanmis gibi bahsetmeyelim :)

Kod:

(defun c:nr (/ cp rp ag rt ss i) (vl-load-com)
  (if (setq cp (getpoint "\nCenter point:"))
    (if (setq rp (getpoint "\nReference point:"))
      (progn
        (setq ag (angle cp rp))
        (cond
          ((and (> ag 0) (<= ag (/ pi 2))) (setq rt (- 0 ag)))
          ((and (> ag (/ pi 2)) (<= ag (+ pi (/ pi 2)))) (setq rt (- pi ag)))
          ((and (> ag (+ pi (/ pi 2))) (< ag (* 2 pi))) (setq rt (- (* 2 pi) ag))))
        (setq ss (ssget "x"))
        (repeat (setq i (sslength ss))
          (vla-rotate (vlax-ename->vla-object (ssname ss (setq i (1- i))))
            (vlax-3d-point cp) rt))
      )
    )
  ) (princ)
)

28.09.2015 07:27    

BLack|E
Alıntı
alumina :
Alıntı
BLack|E :



Mehmet Sahin GUVERCIN hocamizin kitabi okuma kitabi degil calisma kitabidir, lutfen romanmis gibi bahsetmeyelim :)

Kod:

(defun c:nr (/ cp rp ag rt ss i) (vl-load-com)
  (if (setq cp (getpoint "\nCenter point:"))
    (if (setq rp (getpoint "\nReference point:"))
      (progn
        (setq ag (angle cp rp))
        (cond
          ((and (> ag 0) (<= ag (/ pi 2))) (setq rt (- 0 ag)))
          ((and (> ag (/ pi 2)) (<= ag (+ pi (/ pi 2)))) (setq rt (- pi ag)))
          ((and (> ag (+ pi (/ pi 2))) (< ag (* 2 pi))) (setq rt (- (* 2 pi) ag))))
        (setq ss (ssget "x"))
        (repeat (setq i (sslength ss))
          (vla-rotate (vlax-ename->vla-object (ssname ss (setq i (1- i))))
            (vlax-3d-point cp) rt))
      )
    )
  ) (princ)
)




Peki hocamızın kitabı roman değil çalışma kitabıdır :) bu arada lisp çalışma sayfasındaki bütün çizimleri çeviriyor alumina hocam. Ben sadece seçtiğim çizimin dönmesini istemiştim.

28.09.2015 07:40    

alumina
Alıntı
alumina :
Alıntı
BLack|E :



Kod:

(defun c:nr (/ ss cp rp ag rt i) (vl-load-com)
  (if (setq ss (ssget))
    (if (setq cp (getpoint "\nCenter point:"))
      (if (setq rp (getpoint "\nReference point:"))
        (progn
          (setq ag (angle cp rp))
          (cond
            ((and (> ag 0) (<= ag (/ pi 2))) (setq rt (- 0 ag)))
            ((and (> ag (/ pi 2)) (<= ag (+ pi (/ pi 2))))
              (setq rt (- pi ag)))
            ((and (> ag (+ pi (/ pi 2))) (< ag (* 2 pi)))
              (setq rt (- (* 2 pi) ag))))
          (repeat (setq i (sslength ss))
            (vla-rotate (vlax-ename->vla-object (ssname ss (setq i (1- i))))
              (vlax-3d-point cp) rt))
        )
      )
    )
  ) (princ)
)

28.09.2015 07:44    

BLack|E
alumina hocam süpersiniz. Çok teşekkür ederim. Saygılar.

29.09.2015 08:09    

BLack|E
Hocam müsaitseniz eğer, bir sıkıntım daha var. x ekseni ile açı yapmış bir çizgi düşünün ben onun x ve y eksenindeki ölçülerini ölçüp chamfer komutu ile bu değerleri "D" enter ile manuel girip başka bir köşeyi bu ölçülerde chamfer yapmak için uyguluyorum buda ciddi zamanımı alıyor. Lisp girilip bu eğimli çizgi seçildiğinde bu çizginin x ve y değerlerini alıp chamfer komutunu aktif hale getirip bu değerleri chamfer'e ataması durumu mümkünmüdür. Bana sadece x ve y eksenindeki çizgileri seçmek kalsın. Tabi burada sıralamada önemli lisp benden ilk x eksenindeki çizgiyi mi? seçmemi isteyecek yoksa y eksenindeki çizgiyi mi? Şimdiden teşekkürler.

29.09.2015 08:46    

alumina
Alıntı
BLack|E :



Once birincil cizgiyi, sonra sirasiyla x eksenindeki ve y eksenindeki cizgiyi sec.

Kod:

(defun c:ch (/ ss ln ns dt) (vl-load-com)
  (if (setq ss (ssget ":s" '((0 . "line"))))
    (if (setq ln (ssget ":s" '((0 . "line"))))
      (if (setq ns (ssget ":s" '((0 . "line"))))
        (progn
          (setq dt (vlax-safearray->list (vlax-variant-value
            (vla-get-delta (vlax-ename->vla-object (ssname ss 0))))))
          (setvar "chamfera" (car dt))
          (setvar "chamferb" (cadr dt))
          (vl-cmdf "._chamfer" (ssname ln 0) (ssname ns 0))
        )
      )
    )
  ) (princ)
)

29.09.2015 09:12    

BLack|E
Ellerinize sağlık hocam... teşekkürler.

29.09.2015 09:57    

mikemoon
buda radüs kopyalar




(defun C:FMR (/ aper pt); = Fillet Match Radius [of existing curve]

; to apply the radius of a selected curved object in the Fillet command

; Kent Cooper, June 2011

(setq aper (getvar 'aperture))

(while

(not (setq pt (cadr (entsel "Select curve to set Fillet Radius: "))))

(prompt "\nNothing selected -- ")

); end while

(setvar 'aperture (getvar 'pickbox)); ensures Osnap won't "see" wrong thing

(if (osnap pt "cen")

(setvar 'filletrad (distance (osnap pt "nea") (osnap pt "cen"))); then

(progn ; else

(prompt "\nNo radius for that object.")

(setvar 'aperture aper)

(exit)

); end progn

); end if

(setvar 'aperture aper)

(command "_.fillet" "_mUltiple")

(princ)

)

30.09.2015 14:17    

LEYLO
Hocam sorum aşağıda yardımcı olursanız sevinirim.

Yeni revizyonu gelen mimari projede her sefer aynı blockları düzenliyorum.
Benim istediğim önceden hazırlanmış blokları yenileri ile değiştirmek. Ama bunu yaparken blokların isminin autolisp koduna yazılmış olması lazım.
Yani Express/Blocks/Replace block with another block altında açılan blockreplace menüsünden denedim uzun sürüyor tek tek seçmek.

Önceden düzenlenmiş blokları farklı isimle proje içine insert edip eski ile yeniyi seçim yapmadan değiştirmek istiyorum.
örnek:
yeni blok adı: column_600x600
eski blok adı: column_600x600-2

30.09.2015 14:46    

alumina
Alıntı
LEYLO :



Diyelimki 10 tane blok change edilecek. Hadi elindekiler hazir, onlari bir kereye mahsus kodun icine yazacaksin. Ama her yeni mimaride o 10 tane blok isimlerini tek tek alip kodun icine yazmak is degil !!!!

30.09.2015 15:07    

LEYLO
Blok isimleri kod içine 1 defa yazılacak. Yaklaşık 25-30 tane blok var her sefer düzenlenen. Blok isimleri her sefer aynı hiç değişmiyor.

Bu bloklar Rusya da 2 sene sürecek bi avm projesine ait mimari planda. 10 kat ve aynı bloklar her revizyonda yeniden temizleniyor. Ve sürekli revizyon geliyor.

30.09.2015 18:02    

alumina
Alıntı
LEYLO :



Eski blok : a
Yeni blok: a1

Digerlerini listeye nasil ekleyecegini anlamissindir.

Kod:

(defun c:bc (/ ls dc lt ss i ob) (vl-load-com)
  (setq ls '(("a" "a1") ("b" "b1"))
        dc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark dc)
  (foreach lt ls
    (setq ss (ssget "x" (list (cons 0 "insert") (cons 2 (car lt)))))
    (repeat (setq i (sslength ss))
      (setq ob (vlax-ename->vla-object (ssname ss (setq i (1- i))))
            ip (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint ob))))
      (vla-delete ob)
      (vla-InsertBlock (vla-get-modelspace dc) (vlax-3d-point ip) (cadr lt) 1 1 1 0)))
  (vla-endundomark dc)
  (princ)
)

01.10.2015 08:38    

LEYLO
Teşekkürler. Tam istediğim gibi olmuş.

03.10.2015 06:58    

LEYLO
Çizimdeki layerlardan freeze olanları unfreeze yapacak komut var mı? veya lisp ?

Aşağıdaki satıra benzer. Fakat aşağıdaki tüm layırları freeze yapıyor ben tersini istiyorum.

(command "-layer" "on" "*" "freeze" "*" "unlock" "*" "")

03.10.2015 07:22    

halilozcakir
Merhaba arkadaşlar lispler ile alakalı bir uyarı ne yapmalıyım yardımlarınızı rica ediyorum
Command: ; error: Exception occurred: 0xC0000005 (Access Violation)
; warning: unwind skipped on exception

03.10.2015 07:57    

alumina
Alıntı
LEYLO :


laythw

03.10.2015 08:48    

LEYLO
teşekkürler alumina .

03.10.2015 11:06    

LEYLO
Bir ATTRIBUTE etiket ile ona bağlı bir LEADER'ın kesişim (intersection) noktasını veren lisp yazılılabilir mi?

23.08.2019 10:41    

ahmet82
hocalarım,
dcl de kullandığım edit_boxların valuelerini dcl dosyasında yazıyorum.
autolisp ile kullandıktan sonra komutu tekrar çağırdığımda dcl görünen edit_box'ların value'leri son kullandığım veriler olsun istiyorum bunu nasıl yapabilirim.?
tabi ilgili dosyayı başka bir vakit kullandığımda benim ilk yazdığım dcl dosyasındaki valuelar gibi görünmeli

Yardımcı olabilirseniz çok sevinirim.

23.08.2019 12:36    

Travaci
Editbox larda kullanıcağın değerler için default bir değer ver

program sonlandığında değişkenler sıfırlanmaması için

(defun c:test (/ bu kısma değişkenleri yazma))

(if (not deger) (setq deger "61"))

Değeri dcl de göstermek için

(set_tile "key" deger)

Dcl den değerleri alırken tekrar dan aynı değişkene tanımlamayı unutma.

(setq deger (get_tile "key"))

Tekrar çalıştırdığında son girdiğin değerler gözükecektir.

Bu değerler çalıştığın dosyada kalmasını istersen user sistem değişkenlerini kullanabilirsiniz.

useri1/5 tamsayı için
userr1/5 gerçek sayı

Örneğin;

(if (= (getvar "useri2") 0) (setvar "useri2" 61))

(set_tile "key" (rtos (getvar "useri2") 2 0))

(setq deger (setvar "useri2" (atoi (get_tile "key"))))

şeklinde kullanabilirsin.

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] > 39 < [40] [42] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.539 saniye - Sorgu: 99 - Ortalama: 0.01554 saniye