xyz2009xyz 发表于 2011-6-7 19:15:11

为什么不能获取对话框值打断线

(defun C:xyz()
(setvar "expert" 0)
(setq dcl_id(load_dialog "PID_xyz"))
(new_dialog "PID_xyz" dcl_id)
(action_tile "P1" "(ok_scale) (done_dialog 1)")
(setq dd(start_dialog))
(cond
   ((= dd 1) (C:xyz_dc))   
)
(prin1)
)
(defun ok_scale()
   (setq pid_scale (get_tile "xyz_scale"))
   (if (= nil pid_scale)
         (setq pid_scale 1)
   )
)
(defun c:xyz_dc ( / pt an lin1 ps1 ps2 lin2 bn vals p1 p2 paras)
(setvar "CMDECHO" 0)
(command ".undo" "begin");设定UNDO起点
(setq pt (getpoint "选择插入点\n"))
(setq an (getangle pt "选择角度\n"))
(setq lin1 (ssget pt '((0 . "*LINE"))))
(command "-insert" "流量计" ptpid_scale "" (/ (* an 180) PI))    ;; pid_scale 在插入块时能实现比例
;;取得选择集中第一条直线
(setq lin1 (ssname lin1 0))
;;计算打断点
(princ (strcat "\n 值为: " pid_scale))   ;; pid_scale 能打印出值
(setq p1 (polar pt an (* pid_scale 6))) ;;   但是(* pid_scale 6)为什么不能得到值,执行后面打断就有问题,
                                     ;;pid_scale 6如果改成常数没问题,pid_scale 为通过对话框获取                                                      
                     
;;执行打断
(command "._break" lin1 "non" p1 "non" pt)
(command ".undo" "end")
(setvar "CMDECHO" 1)
)

xyz2009xyz 发表于 2011-6-7 19:33:45

(defun ok_scale()
   (setq pid_scale (get_tile "xyz_scale"))
   (if (= nil pid_scale)
         (setq pid_scale 1)
   )
)

改为:

(defun ok_scale()
   (setq pid_scale (get_tile "xyz_scale"))
)

还是不行,请求帮助

ZZXXQQ 发表于 2011-6-7 20:52:22

pid_scale从对话框中读出的是字符串,进行运算前要转换成数字。
页: [1]
查看完整版本: 为什么不能获取对话框值打断线