userzhl 发表于 2008-7-25 07:09:00

[求助]关于先选择后执行的问题,高手帮帮忙。

<p>下面这个程序只能先执行命令,才能选取物体,</p><p>如何改后能先选择后执行?高手帮帮忙。</p><p>(defun C:dd (/ ss)<br/>&nbsp; (command "_undo" "_g")<br/>&nbsp; (if<br/>&nbsp;&nbsp;&nbsp; (/= (setq ss (ssget)) nil)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq DCL_ID (load_dialog "ddchcol.dcl"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (not (new_dialog "colordd" DCL_ID)) (exit))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq WIDTH (dimx_tile "show_image"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq HT (dimy_tile "show_image"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (start_image "show_image")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (fill_image 0 0 WIDTH HT 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (end_image)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ns (getvar "cecolor") ons ns)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (set_tile "colcou" (strcat "选择: " ns))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image" "(setq ns 1)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image2" "(setq ns 2)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image3" "(setq ns 3)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image4" "(setq ns 4)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image5" "(setq ns 5)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image6" "(setq ns 6)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image7" "(setq ns 7)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image8" "(setq ns 8)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image9" "(setq ns 9)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image10" "(setq ns 10)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image11" "(setq ns 11)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image12" "(setq ns 12)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image13" "(setq ns 13)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image14" "(setq ns 14)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image15" "(setq ns 15)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "show_image16" (setq NS "_bylayer"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "cancel" "(setq NS nil)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (start_dialog)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (unload_dialog DCL_ID)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if<br/>&nbsp;(/= ns nil)<br/>&nbsp;(progn<br/>&nbsp;&nbsp; (command "_change" SS "" "_p" "_co" NS "")<br/>&nbsp;&nbsp; (if (= NS "_bylayer")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "\n所选物体改变成 ... BYLAYER")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ (strcat "\n所选物体改变成 ... "<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (itoa NS)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq DCL_ID nil NS nil WIDTH nil HT nil SS nil)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (princ "\n没有选择任何物体!")<br/>&nbsp; )<br/>&nbsp; (command "_undo" "_e")<br/>&nbsp; (princ)<br/>)</p><p>(princ)</p><p></p>

yxp 发表于 2008-7-25 08:16:00

pickfirst ?

英雄无敌 发表于 2008-7-25 08:30:00

(command "_undo" "_g")<br/>这句话不能放在程序的开头,应放在ssget的后面。

sailorcwx 发表于 2008-7-25 10:18:00

(/= (setq ss (ssget)) nil)<br/>改成<br/>(or (setq ss (cdr (ssgetfirst))) (setq ss (ssget)))

洪少(刀模) 发表于 2018-2-3 11:21:37

同问,一直都疑惑,怎样才能像CAD本身,先选择后执行
页: [1]
查看完整版本: [求助]关于先选择后执行的问题,高手帮帮忙。