(cond
(= hole "TB1")(ESS1500))
(= hole "TB2")(ESS1350))
(= hole "TB3")(ESS1200))
(= hole "TB4")(ESS1050))
(t (princ "\nNothing changed.")
) ;_ end of optional else condition
)
其他的都是。这个格式应该有效
(defun ESS1350 ()
"the code here"
) 或者像这样的东西
(defun C:samp4 (/ hole)
(vl-load-com)
(setvar "cmdecho" 0)
(defun MkLay (Nme Col lTyp lWgt Plt / lays lay) ;thank lee for this one
(setq lays
(vla-get-layers
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
)
lay
(cond
((tblsearch "LAYER" Nme)
(vla-item lays Nme)
)
(t (vla-add lays Nme))
)
)
(and Col (vla-put-Color lay Col))
(and lTyp (lTload lTyp) (vla-put-Linetype lay lTyp))
(and lWgt(vla-put-LineWeight lay (eval (read (strcat "acLnWt" lWgt)))))
(and (not Plt) (vla-put-Plottable lay :vlax-false))
)
(defun lTload (lTyp)
(or (tblsearch "LTYPE" lTyp)
(vla-load
(vla-get-Linetypes
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
)
lTyp "acad.lin"
)
)
)
(defun drawingstuff(a layername /)
(if (not(tblsearch "layer" layername))
(MkLay layername 84 a 030 nil)
)
(setvar "clayer" layername)
(command "pline" '(0 0 0) "width" "0.0" "0.0" //)
(setvar "cmdecho" 1)
(command "pline")
)
(setq dcl_id (load_dialog "samp3.dcl"))
(if (not (new_dialog "samp3" dcl_id) )
(progn
(alert "Can not find you dcl file")
(exit)
)
)
(action_tile "T1" "(setq hole \"TB1\")(set_tile \"T2\" \"0\")(set_tile \"T3\" \"0\")(set_tile \"T4\" \"0\")(if (= (get_tile \"T1\") \"0\")(setq hole nil)))")
(action_tile "T2" "(setq hole \"TB2\")(set_tile \"T1\" \"0\")(set_tile \"T3\" \"0\")(set_tile \"T4\" \"0\")(if (= (get_tile \"T2\") \"0\")(setq hole nil)))")
(action_tile "T3" "(setq hole \"TB3\")(set_tile \"T1\" \"0\")(set_tile \"T2\" \"0\")(set_tile \"T4\" \"0\")(if (= (get_tile \"T3\") \"0\")(setq hole nil)))")
(action_tile "T4" "(setq hole \"TB4\")(set_tile \"T1\" \"0\")(set_tile \"T2\" \"0\")(set_tile \"T3\" \"0\")(if (= (get_tile \"T4\") \"0\")(setq hole nil)))")
(action_tile "cancel" "(done_dialog)(setq userclick nil)")
(action_tile "accept" "(done_dialog)(setq userclick T))")
(start_dialog)
(unload_dialog dcl_id)
(if userclick
(cond
((= hole "TB1") (drawingstuff "CCC_DR_1500""CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1500"))
((= hole "TB2") (drawingstuff "CCC_DR_1350" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1350"))
((= hole "TB3") (drawingstuff "CCC_DR_1200" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1200"))
((= hole "TB4") (drawingstuff "CCC_DR_1050" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1050"))
(t (princ "\nNothing changed."))
)
)
(princ)
) woops公司
这是dcl
samp3 : dialog { //dialog name
label = "Structural Holes" ;
:boxed_radio_column {
label = "Choose a Type" ;
:toggle {key = "T1" ; label = "Type &1"; }
:toggle {key = "T2" ; label = "Type &2"; }
:toggle {key = "T3" ; label = "Type &3"; }
:toggle {key = "T4" ; label = "Type &4"; }
} //*end radio column
ok_cancel ; //predifined OK/Cancel
: row { //define row
: paragraph { //define paragraph
: text_part {
label = "Designed by BD";
} //end text
: text_part { //define more text
label = "for CCC NNRDO";
} //end text
} //end paragraph
} //end row
} //end dialog 这很好地完成了工作。谢谢你。我所做的有一个根本性的问题吗?或者只是visual lisp编码更好??
谢谢 如果你不需要什么都不做的选择,你几乎就成功了。
除了cond
这不太正确,离tho不远。
我所做的就是把它改成一个开关,可以接受零。
使用不同的方法创建层
使用不同的方式加载线型。
我将多个命令简化为一个。
使用cond将值传递给它。 谢谢你,但问题是我不明白那里发生了什么。我不能按照代码来修改它以用于我想要运行的其他例程。我知道我有一个,但不知道为什么它不会加载其他ESS例程。 伙计,希望这有帮助
如果需要,请告诉我,这里有一些注释
(defun C:samp4 (/ hole)
(vl-load-com)
(setvar "cmdecho" 0)
;this creates the layer, Give it, name , colour , lintype. lineweight eg 030 and plot (t or nil)
(defun MkLay (Nme Col lTyp lWgt Plt / lays lay) ;thank lee for this one
(setq lays
(vla-get-layers
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
)
lay
(cond
((tblsearch "LAYER" Nme)
(vla-item lays Nme)
)
(t (vla-add lays Nme))
)
)
(and Col (vla-put-Color lay Col))
(and lTyp (lTload lTyp) (vla-put-Linetype lay lTyp))
(and lWgt(vla-put-LineWeight lay (eval (read (strcat "acLnWt" lWgt)))))
(and (not Plt) (vla-put-Plottable lay :vlax-false))
)
;this just searchs for line type, adds it if needed
(defun lTload (lTyp)
(or (tblsearch "LTYPE" lTyp)
(vla-load
(vla-get-Linetypes
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
)
lTyp "acad.lin"
)
)
)
;this is your draw function
;because your codes where all the similar except layer & linetype
(defun drawingstuff(a layername /)
;This searchs for layer
(if (not(tblsearch "layer" layername))
(MkLay layername 84 a 030 nil)
)
;this changes the layer
(setvar "clayer" layername)
;this sets up the width then exits it
(command "pline" '(0 0 0) "width" "0.0" "0.0" //)
;returns cmdecho back, so it has promps for commands
(setvar "cmdecho" 1)
;runs pline & lets user do what they want with it
(command "pline")
)
;loadinc dcl
(setq dcl_id (load_dialog "samp3.dcl"))
(if (not (new_dialog "samp3" dcl_id) )
(progn
(alert "Can not find you dcl file")
(exit)
)
)
;will set the the flag to respected vale, and will set all the tiles to bank
;because there toggle boxes, they can be on all at once, so it stops it,
;it will the cheack if current tile is nil or not
;if it is set the flag nil
(action_tile "T1" "(setq hole \"TB1\")(set_tile \"T2\" \"0\")(set_tile \"T3\" \"0\")(set_tile \"T4\" \"0\")(if (= (get_tile \"T1\") \"0\")(setq hole nil)))")
(action_tile "T2" "(setq hole \"TB2\")(set_tile \"T1\" \"0\")(set_tile \"T3\" \"0\")(set_tile \"T4\" \"0\")(if (= (get_tile \"T2\") \"0\")(setq hole nil)))")
(action_tile "T3" "(setq hole \"TB3\")(set_tile \"T1\" \"0\")(set_tile \"T2\" \"0\")(set_tile \"T4\" \"0\")(if (= (get_tile \"T3\") \"0\")(setq hole nil)))")
(action_tile "T4" "(setq hole \"TB4\")(set_tile \"T1\" \"0\")(set_tile \"T2\" \"0\")(set_tile \"T3\" \"0\")(if (= (get_tile \"T4\") \"0\")(setq hole nil)))")
(action_tile "cancel" "(done_dialog)(setq userclick nil)")
(action_tile "accept" "(done_dialog)(setq userclick T))")
(start_dialog)
(unload_dialog dcl_id)
;if accepted
;search which flag is done, will the pass the line type value and layername to the funtion
(if userclick
(cond
((= hole "TB1") (drawingstuff "CCC_DR_1500""CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1500"))
((= hole "TB2") (drawingstuff "CCC_DR_1350" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1350"))
((= hole "TB3") (drawingstuff "CCC_DR_1200" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1200"))
((= hole "TB4") (drawingstuff "CCC_DR_1050" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1050"))
(t (princ "\nNothing changed."))
)
)
(princ)
)
谢谢你。李和巴扎德帮我整理了一下。
页:
1
[2]