[求助]关于先选择后执行的问题,高手帮帮忙。
<p>下面这个程序只能先执行命令,才能选取物体,</p><p>如何改后能先选择后执行?高手帮帮忙。</p><p>(defun C:dd (/ ss)<br/> (command "_undo" "_g")<br/> (if<br/> (/= (setq ss (ssget)) nil)<br/> (progn<br/> (setq DCL_ID (load_dialog "ddchcol.dcl"))<br/> (if (not (new_dialog "colordd" DCL_ID)) (exit))<br/> (setq WIDTH (dimx_tile "show_image"))<br/> (setq HT (dimy_tile "show_image"))<br/> (start_image "show_image")<br/> (fill_image 0 0 WIDTH HT 1)<br/> (end_image)<br/> (setq ns (getvar "cecolor") ons ns)<br/> (set_tile "colcou" (strcat "选择: " ns))<br/> (action_tile "show_image" "(setq ns 1)")<br/> (action_tile "show_image2" "(setq ns 2)")<br/> (action_tile "show_image3" "(setq ns 3)")<br/> (action_tile "show_image4" "(setq ns 4)")<br/> (action_tile "show_image5" "(setq ns 5)")<br/> (action_tile "show_image6" "(setq ns 6)")<br/> (action_tile "show_image7" "(setq ns 7)")<br/> (action_tile "show_image8" "(setq ns 8)")<br/> (action_tile "show_image9" "(setq ns 9)")<br/> (action_tile "show_image10" "(setq ns 10)")<br/> (action_tile "show_image11" "(setq ns 11)")<br/> (action_tile "show_image12" "(setq ns 12)")<br/> (action_tile "show_image13" "(setq ns 13)")<br/> (action_tile "show_image14" "(setq ns 14)")<br/> (action_tile "show_image15" "(setq ns 15)")<br/> (action_tile "show_image16" (setq NS "_bylayer"))<br/> (action_tile "cancel" "(setq NS nil)")<br/> (start_dialog)<br/> (unload_dialog DCL_ID)<br/> (if<br/> (/= ns nil)<br/> (progn<br/> (command "_change" SS "" "_p" "_co" NS "")<br/> (if (= NS "_bylayer")<br/> (princ "\n所选物体改变成 ... BYLAYER")<br/> (princ (strcat "\n所选物体改变成 ... "<br/> (itoa NS)<br/> )<br/> )<br/> )<br/> )<br/> )<br/> (princ)<br/> (setq DCL_ID nil NS nil WIDTH nil HT nil SS nil)<br/> )<br/> (princ "\n没有选择任何物体!")<br/> )<br/> (command "_undo" "_e")<br/> (princ)<br/>)</p><p>(princ)</p><p></p> pickfirst ? (command "_undo" "_g")<br/>这句话不能放在程序的开头,应放在ssget的后面。 (/= (setq ss (ssget)) nil)<br/>改成<br/>(or (setq ss (cdr (ssgetfirst))) (setq ss (ssget))) 同问,一直都疑惑,怎样才能像CAD本身,先选择后执行
页:
[1]