Duvar çizen lisp
Hızlı duvar çizimi (sıvalı), lsp
- 27.09.2006 15:00
- 27.09.2006 15:00
;BU BÖLÜM DUVAR LİSPİ İÇİN (.LSP)
(defun intersect2line (#a #b)
(setq pt3 (inters
(cdr (assoc 10 (entget #a)))
(cdr (assoc 11 (entget #a)))
(cdr (assoc 10 (entget #b)))
(cdr (assoc 11 (entget #b)))
nil
)
)
(command ".change" #a "" pt3 ".change" #b "" pt3)
(princ)
)
(defun dialog ()
(setq dcl_id (load_dialog "FORMLAR.dcl"))
(if (not (new_dialog "DUVAR" dcl_id))
(exit)
)
(set_tile "DUVAR_GEN" "20")
(set_tile "SIVA_GEN" "3")
(set_tile "DUVAR_YUK" "220")
(if (= durum 1)
(progn
(set_tile "U" "1")
)
)
(if (= durum 2)
(progn
(set_tile "O" "1")
)
)
(if (= durum 3)
(progn
(set_tile "A" "1")
)
)
(mode_tile "DUVAR_GEN" 2)
(action_tile
"U"
"(setq durum 1)"
)
(action_tile
"O"
"(setq durum 2)"
)
(action_tile
"A"
"(setq durum 3)"
)
(action_tile "help" "(yardim)")
(action_tile
"cancel"
"(done_dialog)"
)
(action_tile
"accept"
(strcat
"(progn (setq dg (atof (get_tile "DUVAR_GEN")))"
"(setq sk (atof (get_tile "SIVA_GEN")))"
"(setq md (atof (get_tile "DUVAR_YUK")))"
" (done_dialog)(setq userclick T))"
)
)
(start_dialog)
;(unload_dialog dcl_id)
)
(defun c:duvar ()
(command "thickness" "2.6")
(if (eq durum nil)
(setq durum 1)
)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setq cnt 0)
(setq nosmode (getvar "osmode"))
(if (eq userclick nil )
(dialog)
)
(while (eq (setq pt1 (getpoint "nduvarı çizmeye başlayınız: "))
nil
)
(dialog)
)
(setq pt2 (getpoint pt1 "ndevam ediniz: ")
stpt pt1
)
(setvar "osmode" 0)
(if (eq durum 1)
(setq d1 0
d2 dg
d3 (+ d1 sk)
d4 (+ sk d2)
)
)
(if (eq durum 2)
(setq d1 (/ dg 2.0)
d2 (/ dg 2.0)
d3 (+ d1 sk)
d4 (+ sk d2)
)
)
(if (eq durum 3)
(setq d1 (* dg 1)
d2 0
d3 (* (+ d2 sk) -1.0)
d4 (* (+ d1 sk) -1.0)
)
)
(setvar "highlight" 0)
(while (/= pt2 nil)
(command "_undo" "begin")
(setvar "blipmode" 0)
(setq a1 (angle pt1 pt2))
(setvar "osmode" 0)
(command "layer" "m" "duvar" "c" "red" "" "")
(command ".line"
(polar pt1 (+ a1 1.5707963) d1)
(polar pt2 (+ a1 1.5707963) d1)
""
)
(command ".change" "l" "" "p" "t" md "")
(if (= cnt 0)
(setq l1a (entlast)
l1f l1a
)
(progn
(setq l1b l1a
l1a (entlast)
)
(intersect2line l1a l1b)
)
)
(command "layer" "m" "duvar" "c" "red" "" "")
(command ".line"
(polar pt1 (- a1 1.5707963) d2)
(polar pt2 (- a1 1.5707963) d2)
""
)
(command ".change" "l" "" "p" "t" md "")
(if (= cnt 0)
(setq l2a (entlast)
l2f l2a
)
(progn
(setq l2b l2a
l2a (entlast)
)
(intersect2line l2a l2b)
)
)
(command "layer" "m" "siva" "c" "white" "" "")
(command ".line"
(polar pt1 (+ a1 1.5707963) d3)
(polar pt2 (+ a1 1.5707963) d3)
""
)
(command ".change" "l" "" "p" "t" md "")
(if (= cnt 0)
(setq l1c (entlast)
l3f l1c
)
(progn
(setq l1d l1c
l1c (entlast)
)
(intersect2line l1c l1d)
)
)
(command "layer" "m" "siva" "c" "white" "" "")
(command ".line"
(polar pt1 (- a1 1.5707963) d4)
(polar pt2 (- a1 1.5707963) d4)
""
)
(command ".change" "l" "" "p" "t" md "")
(if (= cnt 0)
(setq l2c (entlast)
l4f l2c
)
(progn
(setq l2d l2c
l2c (entlast)
)
(intersect2line l2c l2d)
)
)
(command "layer" "m" "duvar" "c" "red" "" "")
(setvar "osmode" nosmode)
(command "_undo" "end")
(setq pt1 pt2
pt2 (getpoint pt1)
cnt (1+ cnt)
)
)
(initget "evet hayır")
(if (equal stpt pt1)
(progn
(setq yn (getkword "nduvar kapansin mi? (/hayır): "))
(if (not et)
(setq et "evet")
(setq et (strcase et))
)
(if (= et "evet")
(progn
(intersect2line l1a l1f)
(intersect2line l2a l2f)
(intersect2line l1c l3f)
(intersect2line l2c l4f)
)
)
)
)
(command "thickness" "0.0")
(setvar "osmode" nosmode)
(setvar "blipmode" 0)
(setvar "highlight" 1)
(princ)
)
(defun reset ()
((princ) "nrestoring settings")
(setq *error* temperr)
(setvar "clayer" oldlayer)
(setvar "blipmode" 1)
(setvar "menuecho" 0)
(setvar "highlight" 1)
(setvar "blipmode" 1)
;(setvar "osmode" oldsnap)
(setvar "pickbox" oldpick)
(princ)
)
(defun yardim (/ yardim_kutusu cizgi veri_dosyasi dcl_id)
(if (= yardim_kutusu nil)
(progn
(setq cizgi "")
(setq veri_dosyasi (open (findfile "MK_HELP.txt") "r"))
(while (/= cizgi nil)
(setq cizgi (read-line veri_dosyasi))
(if (/= cizgi nil)
(setq yardim_kutusu (append yardim_kutusu (list cizgi)))
)
)
(close veri_dosyasi)
)
)
(setq dcl_id (load_dialog (findfile "FORMLAR.dcl")))
(if (not (new_dialog "sembol2" dcl_id ""))
(exit)
)
(start_list "listeler")
(mapcar 'add_list yardim_kutusu)
(end_list)
(action_tile "accept" "(done_dialog)")
(start_dialog)
(unload_dialog dcl_id)
)
;****************************************************************************
;BU BÖLÜM DUVAR DİALOG TABLOSU İÇİN (.DCL)
DUVAR : dialog {
label = "DUVAR";
: boxed_column {
label = "Duvar Ayarları";
: edit_box {
label = "Duvar Genişliği";
key = "DUVAR_GEN";
edit_width = 20;
fixed_height = true;
}
: edit_box {
label = "Sıva Kalınlığı";
key = "SIVA_GEN";
edit_width = 20;
fixed_height = true;
}
: edit_box {
label = "Duvar Yüksekliği";
key = "DUVAR_YUK";
edit_width = 20;
fixed_height = true;
}
: boxed_column {
label = "Duvar Yakalam Noktaları";
: row {
:radio_button {
key = "U";
label = "Üstten";
}
:radio_button {
key = "O";
label ="Ortadan";
}
:radio_button {
key = "A";
label = "Alttan";
}
}
}
}
ok_cancel_help ;
}
(defun intersect2line (#a #b)
(setq pt3 (inters
(cdr (assoc 10 (entget #a)))
(cdr (assoc 11 (entget #a)))
(cdr (assoc 10 (entget #b)))
(cdr (assoc 11 (entget #b)))
nil
)
)
(command ".change" #a "" pt3 ".change" #b "" pt3)
(princ)
)
(defun dialog ()
(setq dcl_id (load_dialog "FORMLAR.dcl"))
(if (not (new_dialog "DUVAR" dcl_id))
(exit)
)
(set_tile "DUVAR_GEN" "20")
(set_tile "SIVA_GEN" "3")
(set_tile "DUVAR_YUK" "220")
(if (= durum 1)
(progn
(set_tile "U" "1")
)
)
(if (= durum 2)
(progn
(set_tile "O" "1")
)
)
(if (= durum 3)
(progn
(set_tile "A" "1")
)
)
(mode_tile "DUVAR_GEN" 2)
(action_tile
"U"
"(setq durum 1)"
)
(action_tile
"O"
"(setq durum 2)"
)
(action_tile
"A"
"(setq durum 3)"
)
(action_tile "help" "(yardim)")
(action_tile
"cancel"
"(done_dialog)"
)
(action_tile
"accept"
(strcat
"(progn (setq dg (atof (get_tile "DUVAR_GEN")))"
"(setq sk (atof (get_tile "SIVA_GEN")))"
"(setq md (atof (get_tile "DUVAR_YUK")))"
" (done_dialog)(setq userclick T))"
)
)
(start_dialog)
;(unload_dialog dcl_id)
)
(defun c:duvar ()
(command "thickness" "2.6")
(if (eq durum nil)
(setq durum 1)
)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setq cnt 0)
(setq nosmode (getvar "osmode"))
(if (eq userclick nil )
(dialog)
)
(while (eq (setq pt1 (getpoint "nduvarı çizmeye başlayınız: "))
nil
)
(dialog)
)
(setq pt2 (getpoint pt1 "ndevam ediniz: ")
stpt pt1
)
(setvar "osmode" 0)
(if (eq durum 1)
(setq d1 0
d2 dg
d3 (+ d1 sk)
d4 (+ sk d2)
)
)
(if (eq durum 2)
(setq d1 (/ dg 2.0)
d2 (/ dg 2.0)
d3 (+ d1 sk)
d4 (+ sk d2)
)
)
(if (eq durum 3)
(setq d1 (* dg 1)
d2 0
d3 (* (+ d2 sk) -1.0)
d4 (* (+ d1 sk) -1.0)
)
)
(setvar "highlight" 0)
(while (/= pt2 nil)
(command "_undo" "begin")
(setvar "blipmode" 0)
(setq a1 (angle pt1 pt2))
(setvar "osmode" 0)
(command "layer" "m" "duvar" "c" "red" "" "")
(command ".line"
(polar pt1 (+ a1 1.5707963) d1)
(polar pt2 (+ a1 1.5707963) d1)
""
)
(command ".change" "l" "" "p" "t" md "")
(if (= cnt 0)
(setq l1a (entlast)
l1f l1a
)
(progn
(setq l1b l1a
l1a (entlast)
)
(intersect2line l1a l1b)
)
)
(command "layer" "m" "duvar" "c" "red" "" "")
(command ".line"
(polar pt1 (- a1 1.5707963) d2)
(polar pt2 (- a1 1.5707963) d2)
""
)
(command ".change" "l" "" "p" "t" md "")
(if (= cnt 0)
(setq l2a (entlast)
l2f l2a
)
(progn
(setq l2b l2a
l2a (entlast)
)
(intersect2line l2a l2b)
)
)
(command "layer" "m" "siva" "c" "white" "" "")
(command ".line"
(polar pt1 (+ a1 1.5707963) d3)
(polar pt2 (+ a1 1.5707963) d3)
""
)
(command ".change" "l" "" "p" "t" md "")
(if (= cnt 0)
(setq l1c (entlast)
l3f l1c
)
(progn
(setq l1d l1c
l1c (entlast)
)
(intersect2line l1c l1d)
)
)
(command "layer" "m" "siva" "c" "white" "" "")
(command ".line"
(polar pt1 (- a1 1.5707963) d4)
(polar pt2 (- a1 1.5707963) d4)
""
)
(command ".change" "l" "" "p" "t" md "")
(if (= cnt 0)
(setq l2c (entlast)
l4f l2c
)
(progn
(setq l2d l2c
l2c (entlast)
)
(intersect2line l2c l2d)
)
)
(command "layer" "m" "duvar" "c" "red" "" "")
(setvar "osmode" nosmode)
(command "_undo" "end")
(setq pt1 pt2
pt2 (getpoint pt1)
cnt (1+ cnt)
)
)
(initget "evet hayır")
(if (equal stpt pt1)
(progn
(setq yn (getkword "nduvar kapansin mi? (
(if (not et)
(setq et "evet")
(setq et (strcase et))
)
(if (= et "evet")
(progn
(intersect2line l1a l1f)
(intersect2line l2a l2f)
(intersect2line l1c l3f)
(intersect2line l2c l4f)
)
)
)
)
(command "thickness" "0.0")
(setvar "osmode" nosmode)
(setvar "blipmode" 0)
(setvar "highlight" 1)
(princ)
)
(defun reset ()
((princ) "nrestoring settings")
(setq *error* temperr)
(setvar "clayer" oldlayer)
(setvar "blipmode" 1)
(setvar "menuecho" 0)
(setvar "highlight" 1)
(setvar "blipmode" 1)
;(setvar "osmode" oldsnap)
(setvar "pickbox" oldpick)
(princ)
)
(defun yardim (/ yardim_kutusu cizgi veri_dosyasi dcl_id)
(if (= yardim_kutusu nil)
(progn
(setq cizgi "")
(setq veri_dosyasi (open (findfile "MK_HELP.txt") "r"))
(while (/= cizgi nil)
(setq cizgi (read-line veri_dosyasi))
(if (/= cizgi nil)
(setq yardim_kutusu (append yardim_kutusu (list cizgi)))
)
)
(close veri_dosyasi)
)
)
(setq dcl_id (load_dialog (findfile "FORMLAR.dcl")))
(if (not (new_dialog "sembol2" dcl_id ""))
(exit)
)
(start_list "listeler")
(mapcar 'add_list yardim_kutusu)
(end_list)
(action_tile "accept" "(done_dialog)")
(start_dialog)
(unload_dialog dcl_id)
)
;****************************************************************************
;BU BÖLÜM DUVAR DİALOG TABLOSU İÇİN (.DCL)
DUVAR : dialog {
label = "DUVAR";
: boxed_column {
label = "Duvar Ayarları";
: edit_box {
label = "Duvar Genişliği";
key = "DUVAR_GEN";
edit_width = 20;
fixed_height = true;
}
: edit_box {
label = "Sıva Kalınlığı";
key = "SIVA_GEN";
edit_width = 20;
fixed_height = true;
}
: edit_box {
label = "Duvar Yüksekliği";
key = "DUVAR_YUK";
edit_width = 20;
fixed_height = true;
}
: boxed_column {
label = "Duvar Yakalam Noktaları";
: row {
:radio_button {
key = "U";
label = "Üstten";
}
:radio_button {
key = "O";
label ="Ortadan";
}
:radio_button {
key = "A";
label = "Alttan";
}
}
}
}
ok_cancel_help ;
}
Yazar:
İçerik: LSP (lisp) formatında uygulaması
Tag:
Yorumlar :
admin 21.12.2019 06:55 #15988
Lisplerde komut defun c: ifadesinden sonra gelen yazı ya da kısaltmadır. Dolayısıyla bu lisp için komut duvar 'dır.
tahsinarslan 02.12.2019 02:18 #15985
bunların komutu nedir yazabilirseniz sevinirim
ramazanrg02 26.05.2018 13:28 #15887
bunun yerine ml enter komutunu kullanalım